我有一个调用自己的递归函数。因为它是在承诺中,所以当我再次调用它时,承诺链就连我都无法退回,即使我退还了它。这是我的功能...
let depth = 0;
const maxDepth = 1;
main();
function main()
{
reccursive.then(
function(response)
{
console.log('all finished!');
});
}
function reccursive()
{
return new Promise((resolve, reject)=>
{
console.log('in recursive function');
if (depth === maxDepth)
{
console.log('hit max depth');
return resolve();
}
console.log('not max depth, increasing');
depth++;
return reccursive();
});
}
如果最大深度为0,它将运行一次,然后解决。
答案 0 :(得分:1)
问题是,您需要创建多个Promises吗?如果不是,则创建一个Promise,并具有一个类似于递归函数的内部函数。
graph4.ejs
答案 1 :(得分:0)
您缺少首次通话的解决方法。代替return reslove()
使用
reccursive().then(function(){ resolve();});
let depth = 0;
const maxDepth = 1;
main();
function main()
{
reccursive.then(
function(response)
{
console.log('all finished!');
});
}
function reccursive()
{
return new Promise((resolve, reject)=>
{
console.log('in recursive function');
if (depth === maxDepth)
{
console.log('hit max depth');
return resolve();
}
console.log('not max depth, increasing');
depth++;
reccursive().then(function(){ resolve();});
});
}