How can I make sure the saveToDB function executes after the getImage function, given that getImage does long polling?
GET IMAGE FUNCTION
export const getImage = async (
messageId: string,
setProgress: (newProgressValue: number) => void,
setImageURL: (newImageURL: string) => void,
setMultiImageURL: (newMultiImageURL: string[]) => void,
setMessageID: (newMessageID: string) => void,
setMessageBtnID: (newMessageBtnID: string) => void
) => {
// if messageId is undefined then just return
if (!messageId) {
return;
}
const response = await fetch(`api-url`);
const data = await response.json();
const { progress: innerProgress, response: getImageResponse } = data;
if (innerProgress === 0) {
setProgress(9);
} else {
setProgress(innerProgress as number);
}
if (innerProgress === 100) {
setImageURL(getImageResponse.imageUrl);
setMultiImageURL(getImageResponse.imageUrls);
setMessageID(getImageResponse.originatingMessageId);
setMessageBtnID(getImageResponse.buttonMessageId);
return getImageResponse;
} else {
setTimeout(
async () =>
await getImage(
messageId,
setProgress,
setImageURL,
setMultiImageURL,
setMessageID,
setMessageBtnID
),
5000
);
}
};
MAIN CODE
const getImageResponse = await getImage(
messageId,
setProgress,
setImageURL,
setMultiImageURL,
setMessageID,
setMessageBtnID
);
await saveToDB(
getImageResponse!.imageUrl,
getImageResponse!.imageUrls,
getImageResponse!.originatingMessageId,
getImageResponse!.buttonMessageId
);