有没有可能限制节点中的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
描述中被提及。