Повторять запросы API, пока не поступят новые данные - PullRequest
0 голосов
/ 15 февраля 2019

Я борюсь с этим.У меня есть старый кусок данных.Я хотел бы вызывать 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));

Это, однако, не сработает.Спасибо за любую помощь!

1 Ответ

0 голосов
/ 15 февраля 2019

Я считаю, что проблема в сравнении ваших объектов.Единственная возможная причина того, что обещание разрешается со старыми данными, заключается в том, что if(currentData === data.newData) каждый раз возвращает falseЯ бы проверил это в отладчике, чтобы быть уверенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...