如何实现递归承诺?
How do I implement recursive promises?
我写了一个重试机制,应该return一个承诺:
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");
}
});
}
如果我打电话:
t.connect().then((data:any)=>{ console.log("YES:"+data)});
我希望调用一次 >= 4
和 resolve
能够触发上述 "then".
尝试将计数传递给连接
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");
}
});
}
你需要用新的来解决内心的承诺,return this.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");
}
});
}
请注意,您如何使用 resolve(this.connect());
的新递归承诺解决问题。
查看下面的演示。
function connect() {
return new Promise((resolve, reject) => {
if (this.count < 4) {
console.log("count < 4, count:" + this.count);
this.count++;
resolve(this.connect());
} else {
resolve("YES");
}
});
}
const t = {count: 0, connect}
t.connect().then(data => console.log(`YES: ${data}`));
我写了一个重试机制,应该return一个承诺:
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");
}
});
}
如果我打电话:
t.connect().then((data:any)=>{ console.log("YES:"+data)});
我希望调用一次 >= 4
和 resolve
能够触发上述 "then".
尝试将计数传递给连接
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");
}
});
}
你需要用新的来解决内心的承诺,return this.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");
}
});
}
请注意,您如何使用 resolve(this.connect());
的新递归承诺解决问题。
查看下面的演示。
function connect() {
return new Promise((resolve, reject) => {
if (this.count < 4) {
console.log("count < 4, count:" + this.count);
this.count++;
resolve(this.connect());
} else {
resolve("YES");
}
});
}
const t = {count: 0, connect}
t.connect().then(data => console.log(`YES: ${data}`));