Node.JSasync.parallel困惑 | async.map 返回了什么

Node.JS async.parallel confusion | what is returned by async.map

OneDriveGDrive中都有50个文件夹,每个文件夹包含500 个文件。 onedriveUrlsgdriveUrlslength 50 的数组,分别包含指向这些文件夹的链接。

混乱!下面的代码预计运行两级并行,第一级在async.parallel,第二级在async.map,是吗正确的代码或 async.map 应该包含在 setTimeout 中以确保所有级别都 运行 并行?

async.parallel({
        onedrive: function(callback){
            async.map(onedriveUrls, request, function(err, results) {
                if (err) throw(err);          // handle error
                callback(null,results);  
            });
        },
        gdrive: function(callback){                
            async.map(gdriveUrls, request, function(err, results) {
                if (err) throw(err);          // handle error
                callback(null,results);  
            });
        }
    },
    function(err, results) {
        // results is now equals to: {onedrive: [array_of_length_x], gdrive: [array_of_length_y]}
    });

还有 async.map 返回的内容 -- promise 还是什么?

快乐帮助!

Is it a correct code or async.map should be wrapped in setTimeout to ensure all levels are running parallel?

没有。 request 预计是异步的,一切正常。用 setTimeout 包装任何东西都没有帮助。

Also what is returned by async.map -- promise or what?

没有。 map returns undefined 与大多数其他异步函数一样,它仅使用结果数组调用其回调。


顺便说一句,您应该将代码简化为

async.parallel({
    onedrive: function(callback) {
        async.map(onedriveUrls, request, callback);
    },
    gdrive: function(callback) {
        async.map(gdriveUrls, request, callback);
    }
}, function(err, results) {
    …
});