git URL:https://github.com/dxr199212300/async-Translation.git
Collections
async中的collection是爲了操縱集合的函數,例如Arrays和object
Methods (方法)
concat(coll, iteratee, callback(err)opt)
應用iteratee(迭代器)去遍歷每個coll,將結果串聯後,返回串聯列,
由於iteratee是並行的,因此不能保證數據可以完整並按順序的返回。
Parameters(參數)
coll Array | lterable | object 遍歷的集合
iteratee AsyncFunction 用於遍歷Coll的迭代器,結果將返回一個數組,調用 ( item, callback )
callback( err ) function<optional> 在全部的iteratee結束以後調用callback,或者出現一個error,結果是包含了 iteratee返回的結果的一個數組
Example(實例)
async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files) {
// 如今文件的文件名列表中存在3目錄
});
concatLimit(coll, limit, iteratee, callbackopt)
import concatLimit from 'async/concatLimit’;
和concat同樣 可是限制了每次異步操做時的容許的併發執行的任務數量
Parameters:
Coll Array | lterable |Object 遍歷集合
limit number 每次異步操做時的最大數量
iteratee AsyncFunction 用於遍歷Coll,應用數組做爲結果,調用 ( item, callback )
callback(err) function<optional> 在全部的iteratee結束以後調用callback,或者出現一個error,結果是一個數組包含了iteratee返回的結果
detect(coll, iteratee, callbackopt)
import detect from 'async/detect’;
經過異步測試返回第一個值到coll,iteratee是並行的,意味着第一個iteratee迭代器返回ture時,call只會返回一個結果
這意味着返回的第一項可能不是原始coll順序進行測試的,若是原順序很重要,那麼能夠看看 detectSeries
別名: find
Parameters(參數)
Coll Array | lterable | Object 遍歷集合
iteratee asyncFucntion 真假測試coll的每一項,結果必須是迭代器返回的一個布爾值
callback function<optional> 任何迭代器返回ture,或者所有迭代器結束時callback將被觸發,
結果將返回經過真假測試的數組中的第一項,或者值爲undefined,
若是沒有經過,調用(err,result)
detectLimit(coll, limit, iteratee, callbackopt)
import detectLimit from 'async/detectLimit’;
等同於detect 可是限制了每次異步操做時的容許的併發執行的任務數量
別名: findLimit
Parameters:
Name Type Description
coll Array | alterable | Object 遍歷集合
limit number 每次異步操做時的容許的併發執行的任務數量
iteratee AsyncFunction 應用於coll的真假測試,迭代器必須將布爾值做爲結果,調用(item,callback)
callback function <optional> 任何迭代器返回ture,或者全部迭代器運行結束時調用回調。結果將返回數組第一項,經過真假測試或者 值未定義的數組,調用(err,result)
detectSeries(coll, iteratee, callbackopt)
import detectSeries from 'async/detectSeries';
等同於detect 可是限制了每次異步操做時的容許的併發執行的任務數量
別名: findSeries
Parameters:
Name Type Description
coll Array | alterable | Object 遍歷集合
iteratee AsyncFunction 應用於coll的真假測試,迭代器必須將布爾值做爲結果,調用(item,callback)
callback function <optional> 任何迭代器返回ture,或者全部迭代器運行結束時調用回調。結果將返回數組第一項,經過真假測試或者 值未定義的數組,調用(err,result)
each(coll, iteratee, callbackopt)
import each from 'async/each’;
並行的應用迭代器去遍歷coll。 iteratee將調用數組列表,callback在它結束時進行回調。
若是迭代器傳遞了一個error給callback,callback將回調一個error
注意,因爲迭代器時並行的,因此不能確保迭代器能夠返回完整的原始數據
Alias: forEach
Parameters:
Name type description
coll Array | alterable | Object 遍歷集合
iteratee AsyncFunction 應用於遍歷coll的異步函數,調用(item,callback) 數組的index(下標)沒有經過iteratee,若是你須要index,使用eachof
callback function<optional> 當全部iteratee結束時執行回調,或者error出現,調用(err)
Example
// assuming openFiles is an array of file names and saveFile is a function
假設openfiles是一個屬於文件名的數組,saveFile是一個函數
// to save the modified contents of that file:
保存在另外一個文件修改的內容
async.each(openFiles, saveFile, function(err){
// if any of the saves produced an error, err would equal that error
});
// assuming openFiles is an array of file names
async.each(openFiles, function(file, callback) {
// Perform operation on file here.
console.log('Processing file ' + file);
if( file.length > 32 ) {
console.log('This file name is too long');
callback('File name too long');
} else {
// Do work to process file here
console.log('File processed');
callback();
}
}, function(err) {
// if any of the file processing produced an error, err would equal that error
if( err ) {
// One of the iterations produced an error.
// All processing will now stop.
console.log('A file failed to process’);
} else {
console.log('All files have been processed successfully’);
}
});
eachLimit(coll, limit, iteratee, callbackopt)
import eachLimit from 'async/eachLimit';
等同於each 可是限制了每次異步操做時的容許的併發執行的任務數量
Parameters:
Name Type Description
coll Array | alterable | Object 遍歷集合
limit number 每次異步操做時的容許的併發執行的任務數量
iteratee AsyncFunction 應用於遍歷coll的異步函數,數組下標並不經過迭代器,如 果你須要用到index,使用eachOfLimit,調用 (item,callback)
callback function<optional> 當全部迭代器結束或者出現一個錯誤調用(err)
eachOf(coll, iteratee, callbackopt)
import eachOf from 'async/eachOf';
像是each同樣,除了它經過了一個鍵值(下標)作爲了第二個參數傳遞給迭代器
別名: forEachOf
Parameters:
Name Type Description
coll Array | alterable | Object 遍歷集合
iterable AsyncFunction 應用於遍歷coll,key是項的key,或索引的數組,調用(item,key,callback)
callback function<optional> 當全部迭代器結束或者出現一個錯誤調用(err)
Example
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 is now a map of JSON data
doSomethingWith(configs);
});
eachOfLimit(coll, limit, iteratee, callbackopt)
import eachOfLimit from 'async/eachOfLimit';
等同於eachOf 可是限制了每次異步操做時的容許的併發執行的任務數量
Parameters:
Name Type Description