Установите интервал до начала Обещания и очистите его, как только Обещание разрешится (или отклонит, если хотите):
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);
});