让我们假设您有一个异步函数,希望它能连续运行。此函数从API检索数据并广播响应,每隔一段时间您就会收到一个错误,即获取将失败或API出现问题。有没有一种方法可以让程序在遇到错误时重新启动。
async function main() {
await fetch_broadcasting_function()
setInterval(fetch_broadcasting_function, 11000)
}
main()
每次调用函数时捕获Promise,以便
- 如果第一次失败,执行不会停止(目前,如果第一次获取拒绝,则永远不会调用
setInterval
。或者,可以先调用setInterval
。( - 您不会遇到未经处理的拒绝(在任何提取过程中(
const tryFetch = () => fetch_broadcasting_function().catch(() => {});
async function main() {
await tryFetch(); // you can remove this `await` if desired
setInterval(tryFetch, 11000)
}
main()
我会用try/catch/finally 再次调用它
应该是这样的:
async function main() {
try {
await fetch_broadcasting_function();
setTimeout(main, 11000);
} catch (error) {
console.error('something happened', error);
main();
}
}
main()
这样,如果等待成功,它只会设置Timeout,否则它会再次调用main((。。。