集合(一) collections - sanlex/async_chinese GitHub Wiki
async
用于操作 集合,数组或对象的函数
将多个异步操作的结果合并为一个数组
concat(coll, iteratee, callback(err))
参数:
Name | Type | 描述 |
---|---|---|
coll | Array/Iterable/Object | 可以迭代的 集合 |
iteratee | AsyncFunction | 每个参数将会被使用的函数,将使用(item,callback)方式调用 |
callback(err) | function | 说有的 iteratee 被调用之后的回调 |
//案例
async.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){
//files 为dir1 dir2 dir3 三个文件夹下,文件名组成的数组
});
和concat一样,不过同一时间只操作一次(即串行)
concatSeries(coll, iteratee, callback(err))
返回集合中第一个满足条件的元素. 该iteratee并行执行,即有一个返回true
时,将触发callback并返回结果.这意味着可能不是coll中符合条件的(按顺序)第一个参数.如果coll的顺序很重要,那就使用 detectSeries
detect(coll,iteratee,callback)
别名: 查找(find)
参数:
Name | Type | 描述 |
---|---|---|
coll | Array/iterable/Object | 要迭代的集合 |
iteratee | AsyncFunction | 用于测试coll中的每一项,返回值为boolean ,使用(item,callback)方式调用 |
callback | function | 任何一项检测为true 时调用,并返回符合的第一个元素.当没有符合条件的元素时,返回undefined ,使用(err,result)调用 |
实例:
async.detect(['file1','file2','file3'], function(filePath, callback) {
fs.access(filePath, function(err) {
callback(null, !err)
});
}, function(err, result) {
// result 为第一个符合条件的参数
});
和detect 一样 ,但是通过limit
限制了同时检测(异步)的数量.
detectLimit(coll,limit,iteratee,callback)
别名: findLimit
补充参数:
Name | Type | 描述 |
---|---|---|
limit | number | 一次异步操作的最大数量 |
和detect一样,同一时间只运行一个(串行)
detectSeries(coll,iteratee,callback)