Как сделать что-то каждую секунду в ожидании функции ожидания? - PullRequest
0 голосов
/ 04 октября 2019

Я хочу подождать await myFunction(), и пока я жду, пока myFunction () вернется, я хочу console.log("1 second awaited") каждую 1 секунду. Я пытался использовать .then(), но не получил результатов, возможно, я плохо разбираюсь в обещаниях.

PS: myFunction() получает ответ ajax и работает нормально.

1 Ответ

0 голосов
/ 04 октября 2019

Установите интервал до начала Обещания и очистите его, как только Обещание разрешится (или отклонит, если хотите):

const intervalID = setInterval(() => {
  console.log('1 second awaited');
}, 1000);
try {
  await myFunction();
} catch(e) {
  // ...
}
clearInterval(intervalId);

Или, если catch тоже может бросить (что, вероятно,не должен):

const intervalID = setInterval(() => {
  console.log('1 second awaited');
}, 1000);
try {
  await myFunction();
} catch(e) {
  // ...
} finally {
  clearInterval(intervalId);
}

Может выглядеть лучше без await:

const intervalID = setInterval(() => {
  console.log('1 second awaited');
}, 1000);
myFunction()
  .catch(handleErrors) // either make sure handleErrors doesn't throw, or catch again
  .then(() => {
    clearInterval(intervalId);
  });
...