0
首先模擬PHP - 在js函數睡眠:async.parallel和async.series有什麼區別?
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()
您的例子中,結果將是相同
在node.js中實現阻塞睡眠是一個非常糟糕的主意。 – 2014-08-28 10:52:19
如果要爲異步函數調用(例如db查詢)建模,請改用[內建異步'setTimeout'](http://nodejs.org/api/timers.html#timers_settimeout_callback_delay_arg)。 – 2014-08-28 10:54:45
可能重複[Async.js - 並行真的平行嗎?](http://stackoverflow.com/questions/19023977/async-js-is-parallel-really-parallel) – 2014-08-28 10:56:31