0
私はnodejsでasync.parallelの動作をテストしています。 nodejs async.parallel recursion
var async = require("async");
function makeSleepFunction(i) {
\t return function(callback) {
\t \t setTimeout(function() {
\t \t \t console.log(' + sleep '+i);
\t \t \t callback(null, i);
\t \t }, i);
\t }
}
function parallel(i, callback) {
\t // console.log('----parallel '+i+'-----')
\t return async.parallel([makeSleepFunction(i), makeSleepFunction(i+10)], \t callback);
}
// Expected result OK: 100 before 10
parallel(100, function(err, results) {
\t console.log('async.parallel 1 done: '+results.toString());
\t parallel(10, function(err, results) {
\t \t console.log('async.parallel 2 done: '+results.toString());
\t });
});
// Expected result KO: 100 after 10
setTimeout(function() { // Wait the 1st test is finished
\t console.log('\n\n***** The followig test des not give the expected result:')
\t parallel(100,
\t \t parallel(10, function(err, results) {
\t \t \t console.log('async.parallel 2 done: '+results.toString());
\t \t })
\t);
}, 300);
ありがとうございました。
の、バインドを使用することができます(「OK結果をexpeted」)、100msのタスクは、10ミリ秒のtaksの前に実行されます。それは私が期待したものです。しかし、2番目のテスト( 'setTimeout ...')では、100msタスクは10msタスク後に実行されます。なぜか教えてくれますか ?ここでログがある:100,110 +行わ20 async.parallel 2眠る10 +スリープ:+行わ110 async.parallel 1スリープ100 +スリープ10,20 を***** followig試験は、DESではありません + 10 +行なわ20 async.parallel 2眠る眠る:期待される結果与える10,20 + 100 +私が見る110 [0.46sに仕上がり] – Roge
を睡眠を睡眠を、私は私の答えを変更しました。問題は、パラレル(10 ...関数)を呼び出すことで、最初のパラレルの2番目のパラメタ – sarkiroka