我想等待await myFunction()
,而当我等到myFunction()返回时,我想每1秒钟返回console.log("1 second awaited")
。我尝试使用.then()
,但没有结果,也许我在理解诺言方面很不好。
P.S .: myFunction()
获取ajax响应并且运行正常。
答案 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);
});