javascript - 重试失败的异步/承诺功能?
问题描述
我有这个异步块:
test().then(function(result){
// Success: Do something.
doSomething();
}).catch(function(error){
// Error: Handle the error, retry!
// How to re-run this whole block?
});
我可以跟踪success
结果failed
。test().then().catch()
但是,如果我们失败了,是否可以重试整个链?并继续重试直到条件解决?
解决方案
如果可以切换到async/await
语法,则可以使用while
循环:
let keepTrying;
do {
try {
await test();
keepTrying = false;
} catch {
keepTrying = true;
}
} while (keepTrying)
doSomething();
然后,您可以将重试逻辑抽象为自己的函数以供重用。
推荐阅读
- vscode-remote - 在 VSCode 远程开发容器中运行时如何让 VSCode Liveshare 扩展工作
- python - 如何将列表列表转换为 numpy 矩阵?
- excel - 我需要创建第二个 Scripting.Dictionary 吗?
- angular - 如何显示已在 Angular 8 中销毁的动态组件?
- multithreading - Kotlin 实现多线程请求对冲?
- d - 堆分配任何东西的语法?
- ansible - Ansible 安装模块仅检查状态而不报告状态
- java - MS Edge Chromium webdriver 从 79.309.12 开始崩溃
- c# - 80080005 使用 Word 自动化时服务器执行失败
- node.js - node.js quickbooks api oauth2example redirect_uri 查询参数值无效