each
iteratee使用coll中的每一个参数,并行的执行.如果在执行过程中发生错误,主回调立即被调用并抛出错误. 请注意,由于iteration是并行的,所以不能保证迭代函数按顺序完成.
别名:forEach
参数:
Name | Type | Description |
---|---|---|
coll | 要迭代的集合 | |
iteration | AsyncFunction | 对每个参数使用(item,callback)的形势调用,但是不会获得数组的索引.如果需要索引,请使用 eachOf |
callbac | function | 所有的iteration完成或发生错误后回调,使用(err)的形势调用. |
案例:
- // assuming openFiles is an array of file names and saveFile is a function
-
-
- async.each(openFiles, saveFile, function(err){
- // if any of the saves produced an error, err would equal that error
- });
-
-
- async.each(openFiles, function(file, callback) {
-
-
- console.log( + file);
-
- if( file.length > 32 ) {
- console.log();
- callback();
- } else {
-
- console.log();
- callback();
- }
- }, function(err) {
- // if any of the file processing produced an error, err would equal that error
- if( err ) {
-
-
- console.log();
- } else {
- console.log();
- }
- });
eachLimit
eachLimit(coll,limit,iteratee,callback)
和each一样,使用limit限制了一次运行异步操作的最大条数
别名:forEachLimit
eachOf
eachOf(coll,iteratee,callback)
和each一样,不过可以将coll中的,key(或index)作为第二个参数传递给iteration
别名: forEachOf
补充参数:
Name | Type | Description |
---|---|---|
iteratee | AsyncFunction |
案例:
- var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"};
- var configs = {};
-
- async.forEachOf(obj, function (value, key, callback) {
- fs.readFile(__dirname + value, "utf8", function (err, data) {
- if (err) return callback(err);
- try {
- configs[key] = JSON.parse(data);
- } catch (e) {
- return callback(e);
- }
- callback();
- });
- }, function (err) {
- if (err) console.error(err.message);
-
- (configs);
- });
eachOfLimit
eachOfLimit(coll,limit,iteratee,callback)
和 eachOf一样,通过limit限制并行的最大数.
eachOfSeries
eachOfSeries(coll, iteratee, callback)
与eachOf 按顺序一次只运行一个异步操作相同
别名: forEachOfSeries
eachSeries
与each 按顺序一次只执行一个异步操作相同
别名: forEachSeries