第一个模拟php - 函数在js中休眠:
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])
在tasks数组中运行函数,每个函数在前一个函数完成后运行。如果系列中的任何函数将错误传递给其回调,则不再运行任何函数,并立即使用错误值调用回调。否则,当任务完成时,回调会收到一系列结果。
parallel(tasks, [callback])
并行运行tasks函数数组,无需等到上一个函数完成。如果任何函数将错误传递给其回调,则会立即使用错误值调用主回调。任务完成后,结果将作为数组传递给最终回调。
我的结果:
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()
结果将是相同的
答案 0 :(得分:1)
要回答您的问题:parallel
并行运行这些功能,series
一个接一个地运行。
您的代码无法按预期工作,因为nodejs只为所有函数提供一个进程,而您的函数执行“忙等待”。将它们替换为setTimeout()
,即可获得预期结果...