我正在尝试编写一个递归函数,在使用正确的值进行解析之前,它会多次调用自身。
const recursivePromise = (val = 1) => {
return new Promise((resolve, reject) => {
if (val > 5) {
resolve(val)
} else {
return recursivePromise(val + 1)
}
})
}
const doSomethingWithResult = (val) => {
return new Promise((resolve, reject) => {
resolve(val + 2)
})
}
recursivePromise().then(doSomethingWithResult).then(value => console.log(value))
如果我给出初始值'6',则promise将正确解析,并且传递给链接到它的第二个promise的值。但是,如果 recursivePromise 必须自己调用一次或多次,则解析值将永远不会到达promise链的第二个元素。
有人能指出我在这里缺少什么吗?
答案 0 :(得分:1)
当您调用new Promise(callback)
时,将忽略回调的返回值。你必须明确地致电resolve
以履行承诺,即
const recursivePromise = (val = 1) => {
return new Promise((resolve, reject) => {
if (val > 5) {
resolve(val)
} else {
recursivePromise(val + 1).then(resolve)
}
})
}
更好的是,在没有new Promise
的情况下重写它:
const recursivePromise = (val = 1) => {
if (val > 5)
return Promise.resolve(val)
return recursivePromise(val + 1)
}
recursivePromise().then(console.log)