有没有可能限制节点中的asynchronous任务?

我有以下部分的asynchronous代码…

async.forEach(list, function(file, loopCallback) { console.log("file"); loopCallback(); }, { console.log("all done!"); }); 

这是好的,它打印我的列表中的所有文件的名称。 大。 但是现在,让我们想象一下,我想一次限制文件的数量。

比如,如果我只想让一次只能做一个文件呢?

我听说过async.ParallelLimit和async.Queue,并且想知道如何调整这个代码来适应其中的一个(特别是parallelLimit)。

有任何想法吗?

我认为你需要的是每个限制 ,而不是parallelLimit 。 这里是一个例子:

 async.each( list, 1, // limit function(file, callback) { console.log('Processing file ' + file); callback(); }, function(err){ if( err ) { console.log('Failed to process'); } else { console.log('All files have been processed successfully'); } } ); 

你可以尝试使用(每一个)而不是foreach

 var count = 0; var totalcount = 5; async.every(function() { // Do something. count++; if (count == 5) return false; else return true; }); 

我认为, async.mapLimit是你所需要的:

 async.mapLimit([1,2,3,4,5], 3, function(value, loopCallback) { // will process by 3 items at time console.log(value); loopCallback(value); } 

它在map 描述中被提及。