等待等待功能时每秒如何做某事?

时间:2019-10-04 11:53:26

标签: javascript promise async-await timeout

我想等待await myFunction(),而当我等到myFunction()返回时,我想每1秒钟返回console.log("1 second awaited")。我尝试使用.then(),但没有结果,也许我在理解诺言方面很不好。

P.S .: myFunction()获取ajax响应并且运行正常。

1 个答案:

答案 0 :(得分:0)

在Promise开始之前设置一个时间间隔,并在Promise解决(如果需要,或者拒绝)后将其清除:

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);
  });