Я борюсь с этим.У меня есть старый кусок данных.Я хотел бы вызывать API с интервалом в 5 секунд, пока не получу новый эквивалент этих данных.Я пытаюсь это так (см. Комментарии внутри кода):
const requestTimeout = async(currentData, resolve) => {
//that's my working call to API ;)
const { data } = await requestGet(URL.LOTTERIES_LIST);
// if old data is equal to new data let's try again until the backend API will finally change data to new
if(currentData === data.newData) {
this.setTimeout(requestTimeout(currentData, resolve), 5000);
} else {
resolve(data.newData);
}
};
// this is a function which is called from another part of app, I need to return/resolve a new data from here, current Data is just old piece of data
export function callUntilNewDataArrives(shouldCallAPI, currentData) {
return new Promise(resolve => {
if (shouldCallAPI) {
requestTimeout(currentData, resolve);
}
});
Как указано в комментариях в другой части приложения, я пытаюсь использовать функцию callUntilNewDataArrives просто так:
callUntilNewDataArrives(shouldCallAPI, currentData)
.then(res => console.log(res));
Это, однако, не сработает.Спасибо за любую помощь!