如何在遇到api错误时重新启动异步函数



让我们假设您有一个异步函数,希望它能连续运行。此函数从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((。。。

最新更新