Node.JS async.parallel混淆| 什么是由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返回 – 承诺还是什么?

快乐帮助!

这是一个正确的代码或async.map应该包裹在setTimeout,以确保所有级别运行并行?

request预计是asynchronous的,一切都很好。 在setTimeout中包装任何东西都无济于事。

另外什么是由async.map返回 – 承诺还是什么?

没有。 map像大多数其他asynchronous函数一样返回undefined ,它只调用结果数组的callback函数。


顺便说一句,你应该简化你的代码

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