Javascript 我如何实现递归承诺?
我编写了一个重试机制,它应该返回一个承诺:Javascript 我如何实现递归承诺?,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我编写了一个重试机制,它应该返回一个承诺: private connect(): Promise<any> { return new Promise((resolve, reject) => { if(this.count < 4) { console.log("count < 4, count:"+this.count); this.count++; re
private connect(): Promise<any> {
return new Promise((resolve, reject) => {
if(this.count < 4) {
console.log("count < 4, count:"+this.count);
this.count++;
return this.connect();
} else {
resolve("YES");
}
});
}
我想调用count
=4
和resolve
来触发上述“then”。尝试将计数传递到connect
private connect(count = 0): Promise<any> {
return new Promise((resolve, reject) => {
if(count < 4) {
console.log("count < 4, count:"+count);
return this.connect(++count);
} else {
resolve("YES");
}
});
}
专用连接(计数=0):承诺{
返回新承诺((解决、拒绝)=>{
如果(计数<4){
console.log(“计数<4,计数:+count”);
返回此。连接(++计数);
}否则{
决定(“是”);
}
});
}
尝试将计数传递到connect
private connect(count = 0): Promise<any> {
return new Promise((resolve, reject) => {
if(count < 4) {
console.log("count < 4, count:"+count);
return this.connect(++count);
} else {
resolve("YES");
}
});
}
专用连接(计数=0):承诺{
返回新承诺((解决、拒绝)=>{
如果(计数<4){
console.log(“计数<4,计数:+count”);
返回此。连接(++计数);
}否则{
决定(“是”);
}
});
}
您需要用新的解决内部承诺,返回此。connect()
还不够:
function connect(): Promise<any> {
return new Promise((resolve, reject) => {
if (this.count < 4) {
console.log("count < 4, count:" + this.count);
this.count++;
resolve(this.connect());
} else {
resolve("YES");
}
});
}
您需要用新承诺解决内部承诺,
返回此承诺。connect()
还不够:
function connect(): Promise<any> {
return new Promise((resolve, reject) => {
if (this.count < 4) {
console.log("count < 4, count:" + this.count);
this.count++;
resolve(this.connect());
} else {
resolve("YES");
}
});
}
“我希望一次计数>=4,并调用resolve触发上述”然后“”-尝试重新表述此句子。您可以找到多个顺序链接承诺的详细承诺工作流,每个承诺在拒绝之前尝试5次。通过递归计数传递实现。“我希望一次计数>=4,并调用resolve来触发上述“然后”-尝试重新表述此句子。您可以找到多个顺序链接承诺的详细承诺工作流,每个承诺在拒绝前尝试5次。通过递归计数传递实现。更好的是:从
count=4开始,在count>0
时递减,这样重试次数就可以更改。无需传递计数,OP似乎有count
属性定义为t
对象的一部分。无论如何,这也行不通。啊,是的,承诺没有解决@dfsq的解决方案会起作用,但您需要确保重置此。计数
,否则每次都会得到解决(除非这是您需要的行为)。更好的方法是:从count=4开始,在count>0
时递减,这样可以更改重试次数无需通过计数,OP似乎将count
属性定义为t
对象的一部分。无论如何,这也行不通。啊,是的,承诺没有解决@dfsq的解决方案将起作用,但您需要确保重置此。计数,否则每次都会得到解决(除非这是您需要的行为)。为什么不使用拒绝?这个问题是否有具体的原因或模棱两可之处?如果没有理由-我很想知道怎么做=)为什么不使用拒绝?这个问题是否有具体的原因或模棱两可之处?如果没有理由-我很想知道怎么做=)