async.series 和 async.parallel 之间的区别

编程代码

1个回答

写回答

Kimjisoo爱你

2025-06-23 00:20

+ 关注

Java
Java

使用async.series和async.parallel是在JavaScript中处理异步操作的两种常见方式。这两个方法都是由第三方库async.JS提供的,用于控制流程的异步处理。

async.series用于按顺序执行一系列的异步操作。它接收一个数组作为参数,数组中的每个元素都是一个函数,每个函数都包含一个回调函数作为参数。在前一个函数执行完成并调用回调函数之后,才会执行下一个函数。如果前一个函数中的回调函数携带了错误参数,那么后续的函数将不会执行,整个series将会立即结束。

async.parallel则用于同时执行多个异步操作。它也接收一个数组作为参数,数组中的每个元素同样是一个函数,每个函数同样都包含一个回调函数作为参数。与async.series不同的是,async.parallel会同时执行所有的函数,不会等待前一个函数执行完成。当所有的函数都执行完成并调用回调函数之后,整个parallel才会结束。

案例代码:

Javascript

const async = require('async');

// async.series示例

async.series([

function(callback) {

setTimeout(function() {

console.log('第一个函数执行完成');

callback(null, '第一个结果');

}, 2000);

},

function(callback) {

setTimeout(function() {

console.log('第二个函数执行完成');

callback(null, '第二个结果');

}, 1000);

}

], function(err, results) {

if (err) {

console.error(err);

} else {

console.log('所有函数执行完成');

console.log('结果:', results);

}

});

// async.parallel示例

async.parallel([

function(callback) {

setTimeout(function() {

console.log('第一个函数执行完成');

callback(null, '第一个结果');

}, 2000);

},

function(callback) {

setTimeout(function() {

console.log('第二个函数执行完成');

callback(null, '第二个结果');

}, 1000);

}

], function(err, results) {

if (err) {

console.error(err);

} else {

console.log('所有函数执行完成');

console.log('结果:', results);

}

});

async.series的使用

async.series方法用于按顺序执行一系列的异步操作。下面的例子展示了两个异步函数如何按照顺序执行,并在所有函数执行完成后输出结果。

Javascript

async.series([

function(callback) {

setTimeout(function() {

console.log('第一个函数执行完成');

callback(null, '第一个结果');

}, 2000);

},

function(callback) {

setTimeout(function() {

console.log('第二个函数执行完成');

callback(null, '第二个结果');

}, 1000);

}

], function(err, results) {

if (err) {

console.error(err);

} else {

console.log('所有函数执行完成');

console.log('结果:', results);

}

});

上述代码中,两个异步函数分别使用setTimeout模拟延迟执行,第一个函数延迟2秒执行,第二个函数延迟1秒执行。在每个函数的回调函数中,我们调用了callback函数,并传递了结果作为参数。当所有函数执行完成后,最终的回调函数将会被调用,我们可以在回调函数中获取到结果数组。

async.parallel的使用

async.parallel方法用于同时执行多个异步操作。下面的例子展示了两个异步函数如何同时执行,并在所有函数执行完成后输出结果。

Javascript

async.parallel([

function(callback) {

setTimeout(function() {

console.log('第一个函数执行完成');

callback(null, '第一个结果');

}, 2000);

},

function(callback) {

setTimeout(function() {

console.log('第二个函数执行完成');

callback(null, '第二个结果');

}, 1000);

}

], function(err, results) {

if (err) {

console.error(err);

} else {

console.log('所有函数执行完成');

console.log('结果:', results);

}

});

上述代码中,两个异步函数同样使用setTimeout模拟延迟执行。不同之处在于,这次我们不是按顺序执行函数,而是同时执行它们。当所有函数都执行完毕后,最终的回调函数将会被调用,并返回结果数组。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号