我有一个异步递归函数,如果还有更多的工作需要返回promise,否则返回结果数组.如果不涉及递归,它会正确返回数组,但是当递归时,数组是未定义的.代码是
function foo(filepath) {
var resultArr = [];
function doo(file) {
return asyncOperation(file).then(resp => {
resultArr.push(resp.data);
if (resp.pages) {
var pages = resp.pages.split(',');
pages.forEach(page => {
return doo(page);
});
} else {
return resultArr;
}
});
}
return doo(filepath);
}
Run Code Online (Sandbox Code Playgroud)
以及这个被称为的方式
foo(abcfile).then(function(result){
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
如果我传递没有resp.pages的abcfile,我得到结果数组,但是有resp.pages,那么结果数组是未定义的.