javascript承诺递归

ams*_*ams 6 javascript recursion es6-promise

我有一个异步递归函数,如果还有更多的工作需要返回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,那么结果数组是未定义的.

Don*_*mmy -1

问题是当有页面时你不会返回任何内容。

function foo(filepath) {

  var resultArr = [];

  function doo(file, promises) {
        let promise = asyncOperation(file).then(resp => {
            resultArr.push(resp.data);
            if (resp.pages) {
                var pages = resp.pages.split(',');
                var pagePromises = [];
                pages.forEach(page => {
                    return doo(page, pagePromises);
                });

                //Return the pages
                return pagePromises;
            } else {
                return resultArr;
            }
        });

        //They want it added
        if ( promises ) { promises.push( promise ); }

        //Just return normally
        else { return promise; }
    }

    return doo(filepath);
}
Run Code Online (Sandbox Code Playgroud)