nodejs / js:即使在callback之后,也只执行async.series的第一个函数
只有async.series的第一个函数被执行,第二个甚至没有为下面的代码启动:
var async = require("async"); var src = 0; async.series([ function(callback) { callback("Called from 1"); }, function(callback){ callback("Called from 2"); }] , function (desc) { console.log(desc) src++ console.log(src+".1."+"--->"+src) console.log(src+".2."+"now it should return") } );
任何想法为什么这不是第二个?
输出:
Called from 1 1.1.--->1 1.2.now it should return
我相信callback的第一个参数应该是空callback(null,“从1调用”)
谢谢Fadi。 只是要详细说明,这里的callback与err,desc,…..其他参数的强制签名一起进行。 正如所观察到的,每当我在第一个参数中传递一个非空值或非错误值时,执行就停在那里,然后 – 不会执行下一个函数,即停在接收到的第一个真正的错误。
另外,我假设每个系列函数执行后都会调用这个callback函数,但是在所有的函数执行之后,实际上会调用它。
整理如下:
var async = require("async"); var src = 0; async.series([ function(callback) { callback(null,"Called from 1"); }, function(callback){ callback(false,"Called from 2"); }] , function (err,desc) { console.log(desc) src++ console.log(src+".1."+"--->"+src) console.log(src+".2."+"now it should return") } );
输出:
[ 'Called from 1', 'Called from 2' ] 1.1.--->1 1.2.now it should return
callback函数中的第一个参数应该是null,如下所示:
callback(null, "Called from 1");