【发布时间】:2018-03-27 21:48:21
【问题描述】:
我正在使用承诺(带有等待)。我有一个必须等待异步请求的异步函数:例如 http 请求。 HTTP 请求可能会失败(超时或其他动机),但我需要调用它直到成功或完成最大尝试次数(比如说 n 次尝试),然后继续执行该函数。 我无法找到一种干净且组织良好的方式来做到这一点。 下面是一个伪代码:
async function func(){
//DO something before HTTP request
try{
let res = await http_request();
} catch(e){
//http request failed
//WHAT TO DO HERE TO CALL AGAIN THE HTTP REQUEST until success??
//or until max attempts == n?
}
//DO other stuff only after the http request succeeded
return;
}
这个想法是在最后返回一个承诺,如果 http 请求和其余代码成功则解决,或者如果 http 请求尝试失败 n 次或其他错误则拒绝。
PS:http 请求是一个示例,但 http_request() 可以替换为任何其他异步函数。
【问题讨论】:
标签: javascript promise try-catch