【发布时间】:2019-01-18 13:02:06
【问题描述】:
我试图测试是否可以在解决之前进行承诺重试,但它一直给出“递归过多”错误,我不明白为什么它在第三次递归后没有停止。
以下代码试图模拟对服务器的失败查询请求,该请求来自非承诺函数。
function nonPromiseCallback(x, resolve, reject){
if(x < 3){
reject(x)
}else{
resolve(x)
}
}
function tryUntilThree(x){
return new Promise( (resolve, reject) => {
nonPromiseCallback(x, resolve, tryUntilThree(x+1));
})
}
tryUntilThree(1)
.then(console.log);
【问题讨论】:
-
检查this的答案,可能对你有帮助
-
你得到了太多的递归,因为 tryUntilThree 被调用了太多次。请注意,您已经编写了 tryUntilThree(x+1),即引擎必须先解析对 tryUntilThree 的调用,然后才能调用 nonPromiseCallback。你在那里有一个无限循环。
-
@some:介意我在回答中引用您的评论吗? :)
-
@vicbyte 我不介意。我在代码周围添加了特殊引号(在我的评论中他们用斜体表示)
标签: javascript ecmascript-6 es6-promise