错误是什么?我认为这段代码必须无限输出22,23,24,25 ......等。
function find() {
let numberPage = 22;
getPromiseOpenPage(numberPage);
function getPromiseOpenPage (numberPage) {
return new Promise( function (resolve, reject) {
resolve(numberPage);
})
}
getPromiseOpenPage().then(
function (res) {
console.log(res);
getPromiseOpenPage(res++);
}
)
}
答案 0 :(得分:0)
您需要创建一个递归循环来处理所有无限承诺结果。
getPromiseOpenPage(res++);
你这里没有处理.then
(不,第一个getPromiseOpenPage().then(
不计算,因为它是一个不同的电话)。
所以解决方案是这样的:
handlePromise() {
myPromise.then((res) => handlePromise()); // On Promise complete it will go back
// to the handler.
}
handlePromise(); // Start handlePromise the first time.
答案 1 :(得分:0)
您不应将getPromiseOpenPage()
作为initial
函数
在test(numberPage)
内,你提供了迭代的初始值,它调用的getPromiseOpenPage()
将返回success
状态。
和console.log(res)
响应值,iterate
按1
再次调用test(res)
,提供1
增加的新增值是23
.......一次又一次地重复同样的过程.........无限次
const numberPage = 22;
function getPromiseOpenPage(p) {
return new Promise((resolve, reject) => {
resolve(p);
});
}
function test(p) {
getPromiseOpenPage(p).then((res) => {
console.log(res);
res = res+1;
test(res);
})
}
test(numberPage);