Node.js异步并行递归

罗格

我正在使用nodejs测试async.parallel行为。

var async = require("async");

function makeSleepFunction(i) {
	return function(callback) {
		 setTimeout(function() {
			  console.log('   + sleep '+i);
			  callback(null, i);
		 }, i);
	}
}

function parallel(i, callback) {
	// console.log('----parallel '+i+'-----')
	return async.parallel([makeSleepFunction(i), makeSleepFunction(i+10)],	callback);
}

// Expected result OK: 100 before 10
parallel(100, function(err, results) {
	console.log('async.parallel 1 done: '+results.toString());
	parallel(10, function(err, results) {
		console.log('async.parallel 2 done: '+results.toString());
	});
});

// Expected result KO: 100 after 10
setTimeout(function() { // Wait the 1st test is finished
	console.log('\n\n***** The followig test des not give the expected result:')
	parallel(100,
		parallel(10, function(err, results) {
			console.log('async.parallel 2 done: '+results.toString());
		})
	);
}, 300);

有人可以用第二次测试解释没有给出预期的结果吗?

感谢帮助。

萨科罗卡

异步并行等待每个完成的任务。您的任务定时为i和i + 10。并行的第一个调用等待最长的睡眠时间,即110 ms。出于相同原因的第二个呼叫将等待20毫秒。您的代码至少等待110 + 20 = 130毫秒,然后再写一条消息:“ async.parallel 2 done”

在第二个测试中,您没有传递回调,但是立即调用了一个新的并行函数。尝试这种方式:

setTimeout(function() { // Wait the 1st test is finished
    console.log('\n\n***** The followig test des not give the expected result:')
    parallel(100,function(){ //not call, but only declare a function
        parallel(10, function(err, results) {
            console.log('async.parallel 2 done: '+results.toString());
        })
    });
}, 300);

或者你当然可以使用bind

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归,Node js和异步调用

来自分类Dev

Node.js异步并行“ TypeError:任务不是函数”

来自分类Dev

Node.js异步并行-有什么后果?

来自分类Dev

API调用的异步并行与node.js中的回调

来自分类Dev

Node.js异步并行不应该如何工作?

来自分类Dev

Node.js的异步调用和递归

来自分类Dev

Node.js并行异步调用,但具有优先级

来自分类Dev

node.js并行执行

来自分类Dev

Node.js与Promise并行

来自分类Dev

功能-Node.js中的异步映射,递归和回调的组合

来自分类Dev

在Node.js中,异步递归函数正在解析空承诺

来自分类Dev

在node.js应用程序中使用q.js的q.all来实现并行异步

来自分类Dev

在node.js应用程序中使用q.js的q.all来实现并行异步

来自分类Dev

Node js中的复杂递归

来自分类Dev

Node.js同步与异步

来自分类Dev

Node.js异步读写

来自分类Dev

Node Express 中的并行异步路由器

来自分类Dev

Node.js中的并行任务

来自分类Dev

Node.js / Express和并行队列

来自分类Dev

使用线程的Node.js并行编程

来自分类Dev

Node.js中的并行SQLite查询

来自分类Dev

Node.js上与事件相关的递归

来自分类Dev

猫鼬+ Node.js:异步问题

来自分类Dev

node.js异步系列函数的参数

来自分类Dev

node.js上的异步/流系列

来自分类Dev

Node.js用异步数据响应

来自分类Dev

Node.js异步数组迭代

来自分类Dev

Node.js-异步方法调用问题

来自分类Dev

Node.js异步MongoDB保存或更新