async.parallel() 是异步操作的一种方式,它可以同时运行多个任务,并在所有任务完成后执行回调函数。内部回调函数是在每个任务完成后被调用的函数,用于收集该任务的结果并将其传递给主回调函数。
以下是一个简单的示例,其中使用 async.parallel() 来同时下载多个文件:
const async = require('async');
const request = require('request');
const fs = require('fs');
const files = [
{
name: 'file1.txt',
url: 'https://example.com/file1.txt'
},
{
name: 'file2.txt',
url: 'https://example.com/file2.txt'
},
{
name: 'file3.txt',
url: 'https://example.com/file3.txt'
}
];
async.parallel(
files.map((file) => {
return (callback) => {
request(file.url, (err, res, body) => {
if (err) {
return callback(err);
}
fs.writeFile(file.name, body, (err) => {
if (err) {
return callback(err);
}
return callback(null, `Downloaded ${file.name}`);
});
});
};
}),
(err, results) => {
if (err) {
console.error(err);
return;
}
console.log(results);
}
);
在这个示例中,我们使用 async.parallel() 运行三个任务,每个任务通过发送 HTTP 请求下载文件。每个内部回调函数被调用一次,并向结果数组中添加该文件的下载结果。最终,主回调函数将打印整个结果数组。