如何令async.parallel并发执行完所有函数后,再执行另一个函数
时间: 2024-09-19 12:12:29 浏览: 64
如果你想要在 `async.parallel` 执行完所有并行任务后,立即执行另一个函数,可以将那个函数包装在一个单独的回调函数中,然后传递给 `async.parallel` 的最后。这是一个示例:
```javascript
const { parallel } = require('async');
function taskFunction(index, callback) {
// 这些是你需要异步执行的任务
setTimeout(() => {
const result = someAsyncOperation(index);
callback(null, result); // 注意这里的callback,它表示任务结束后的通知
}, 1000 * index); // 模拟异步时间
}
// 并行执行任务列表,每个任务完成后调用提供的回调
async.parallel([
taskFunction.bind(null, 0),
taskFunction.bind(null, 1),
// 更多任务...
], (err, results) => {
if (err) {
console.error('Error:', err);
} else {
// 这是在所有任务完成后执行的函数
handleTasksCompletion(results);
// 或者你想做的其他操作
}
});
function handleTasksCompletion(results) {
// 在这里执行你希望在所有任务完成后运行的代码
console.log('所有任务已完成,开始执行其他函数...');
}
```
在这个例子中,`handleTasksCompletion` 函数会在 `async.parallel` 执行所有任务后被立即调用。注意,你需要保证 `taskFunction` 的回调函数中正确地传递错误信息(如果有),以便在 `handleTasksCompletion` 中判断是否发生错误。
阅读全文