async.js 中文文档
目录
1、[简介](#简介)
2、[方法介绍](#方法介绍)
[detect](#detect)
[detectLimit](#detectLimit)
[detectSeries](#detectSeries)
[each](#each)
3、[示例代码](#示例代码)
4、[相关问题与解答](#相关问题与解答)
简介
async.js 是一个用于 Node.js 的实用模块,提供了直接、强大的函数来处理异步 JavaScript,它最初设计用于 Node.js,但也可以作为浏览器端的库使用,该模块提供了大约 70 个函数,包括常见的“功能”方法(如 map、reduce、filter、each)以及一些异步控制流模式(如 parallel、series、waterfall)。
方法介绍
concat
concat(coll, iteratee, callbackopt)
将iteratee
应用于集合coll
中的每个项目,连接结果并返回一个数组,如果未传递回调函数,则返回一个 Promise。
参数:
| 名称 | 类型 | 描述 |
| --| --| --|
| coll | Array | Iterable | AsyncIterable | Object | 要迭代的集合。 |
| iteratee | AsyncFunction | 应用于coll
中每一项的函数,应使用数组作为其结果,使用 (item, callback) 调用。 |
| callback | function<optional> | 在所有iteratee
完成或发生错误后调用的回调,结果是包含iteratee
函数连接结果的数组,使用 (err, results) 调用。 |
返回值:
如果没有传递回调函数,则为 Promise。
concatLimit
concatLimit(coll, limit, iteratee, callbackopt)
类似于concat
,但限制每次运行的异步操作数量。
参数:
| 名称 | 类型 | 描述 |
| --| --| --|
| coll | Array | Iterable | AsyncIterable | Object | 要迭代的集合。 |
| limit | number | 同时运行的最大异步操作数。 |
| iteratee | AsyncFunction | 应用于coll
的函数,应返回一个数组,使用 (item, callback) 调用。 |
| callback | function<optional> | 在所有iteratee
完成或发生错误后调用的回调,结果是包含iteratee
函数连接结果的数组,使用 (err, results) 调用。 |
detect
detect(coll, iteratee, callbackopt)
通过异步测试返回第一个满足条件的值,如果未找到符合条件的值,则返回 undefined。
参数:
| 名称 | 类型 | 描述 |
| --| --| --|
| coll | Array | Iterable | Object | 要迭代的集合。 |
| iteratee | AsyncFunction | 应用于coll
的真假测试函数,结果必须是布尔值,使用 (item, callback) 调用。 |
| callback | function<optional> | 如果任何迭代器返回 true,或者所有迭代器结束时调用回调,结果是通过真假测试的第一个数组项,或值为 undefined,使用 (err, result) 调用。 |
detectLimit
detectLimit(coll, limit, iteratee, callbackopt)
类似于detect
,但限制每次运行的异步操作数量。
参数:
| 名称 | 类型 | 描述 |
| --| --| --|
| coll | Array | Iterable | Object | 要迭代的集合。 |
| limit | number | 同时运行的最大异步操作数。 |
| iteratee | AsyncFunction | 应用于coll
的真假测试函数,必须返回布尔值,使用 (item, callback) 调用。 |
| callback | function<optional> | 如果任何迭代器返回 true,或者所有迭代器结束时调用回调,结果是通过真假测试的第一个数组项,或值为 undefined,使用 (err, result) 调用。 |
detectSeries
detectSeries(coll, iteratee, callbackopt)
类似于detect
,但迭代器是串行执行的。
参数:
| 名称 | 类型 | 描述 |
| --| --| --|
| coll | Array | Iterable | Object | 要迭代的集合。 |
| iteratee | AsyncFunction | 应用于coll
的真假测试函数,必须返回布尔值,使用 (item, callback) 调用。 |
| callback | function<optional> | 如果任何迭代器返回 true,或者所有迭代器结束时调用回调,结果是通过真假测试的第一个数组项,或值为 undefined,使用 (err, result) 调用。 |
each
each(coll, iteratee, callbackopt)
并行地对集合coll
的每个项目应用iteratee
函数,如果传递了错误到回调函数,则立即调用回调函数并传递错误。
参数:
| 名称 | 类型 | 描述 |
| --| --| --|
| coll | Array | Iterable | Object | 要迭代的集合。 |
| iteratee | AsyncFunction | 应用于coll
的异步函数,使用 (item, callback) 调用。 |
| callback | function<optional> | 当所有iteratee
完成或出现错误时调用回调,如果传递了错误到任何迭代器回调函数,则立即调用最终回调函数并传递错误。 |
示例代码
以下是一些 async.js 方法的示例代码:
const async = require('async'); const fs = require('fs'); // concat example with callbacks async.concat(['dir1', 'dir2', 'dir3'], fs.readdir, function(err, files) { if (err) { console.log(err); } else { console.log(files); // ['file1.txt', 'file2.txt', 'file3.txt', ...] } }); // concat example with promises async.concat(['dir1', 'dir2', 'dir3'], fs.readdir) .then(files => console.log(files)) .catch(err => console.log(err)); // each example with callbacks let openFiles = ['file1.txt', 'file2.txt']; // Assuming these files exist async.each(openFiles, fs.readFile, function(err) { if (err) { console.log('A file failed to read'); } else { console.log('All files have been read'); } });
相关问题与解答
问题1:如何在 async.js 中使用 Promise?
答:async.js 支持 Promise,可以通过不传递回调函数来获得 Promise。
async.concat(['dir1', 'dir2', 'dir3'], fs.readdir) .then(files => console.log(files)) .catch(err => console.log(err));
在这个例子中,async.concat
返回一个 Promise,可以使用.then()
和.catch()
方法处理结果和错误。
问题2:如何限制并发操作的数量?
答:可以使用concatLimit
、detectLimit
等带有limit
参数的方法来限制并发操作的数量。
async.concatLimit(['dir1', 'dir2', 'dir3'], 2, fs.readdir, function(err, files) { if (err) { console.log(err); } else { console.log(files); // Only two directories are read at a time. } });
在这个例子中,concatLimit
的第二个参数2
表示同时最多运行两个异步操作。
各位小伙伴们,我刚刚为大家分享了有关“async.js 中文文档”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/654031.html