gpt4 book ai didi

node.js - async.parallel 和 async.series 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:58 24 4
gpt4 key购买 nike

第一个模拟 php - js 中的 sleep 函数:

 function sleep(seconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + seconds*1000);
}

然后是我的例子:

var async = require('async');

var a = function(callback)
{
sleep(10)
console.log("Hello ");
callback(null,'vals1')
// return 'prop'
};
var b = function(callback)
{
//I want get return 'prop' from a() its posible ?
sleep(30)
console.log("World");
callback(null,"vals2")
};

var c = function(callback)
{
//I want get return 'prop' from a() its posible ?
sleep(2)
console.log(" and U");
callback(null,"val3")
};
async.parallel(
[
a,b,c
],function(err,vals){

//console.log(err)//undefined
console.log(vals) //[val1,vals2]
console.log('finals')
}
);

series(tasks, [callback])

连续运行任务数组中的函数,每个函数在前一个函数完成后运行。如果该系列中的任何函数将错误传递给其回调,则不再运行任何函数,并立即使用错误值调用回调。否则,当任务完成时,回调会收到一组结果。

parallel(tasks, [callback])

并行运行任务函数数组,无需等待前一个函数完成。如果任何函数将错误传递给其回调,则会立即使用错误值调用主回调。任务完成后,结果将作为数组传递到最终回调。

我的结果:

break about 10sec 
Hello

break about 30sec
World

and small break
and U

我希望按以下顺序执行功能:

output immediately 
and U

break about 10sec
Hello

break about 30sec
World

如果甚至替换您的示例

async.series()

结果是一样的

最佳答案

回答您的问题:并行并行运行这些函数,系列依次运行。

您的代码无法按预期工作,因为 NodeJS 只为所有函数提供一个进程,并且您的函数会执行“忙等待”。将它们替换为 setTimeout(),您将获得预期的结果...

关于node.js - async.parallel 和 async.series 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25546976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com