我正在尝试在node-webkit应用程序中使用nodejs async模块(瀑布方法),但它无法正常运行。它似乎直接跳到链中的最后一项并忽略其他一切。我的代码在nodejs中完美运行。我认为它可能是我的代码,但即使是async文档中的以下示例也是如此。
async.waterfall([
function(callback){
callback(null, 'one', 'two');
},
function(arg1, arg2, callback){
callback(null, 'three');
},
function(arg1, callback){
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
console.log(result)
// result now equals 'done'
});
但是,以下使用async.series方法的示例可以正常工作:
async.series([
function(callback){
// do some stuff ...
callback(null, 'one');
},
function(callback){
// do some more stuff ...
callback(null, 'two');
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
});
答案 0 :(得分:1)
这是异步模块的一个错误,Github上存在一个关于此问题的开放问题(issue #302。)问题是当节点创建一个新环境(使用vm模块)时,该数组检查异步使用内部无效。
我通过更改lib/async.js
中第472行的数组检查来修复此问题:
async.waterfall = function (tasks, callback) {
callback = callback || function () {};
if (tasks.constructor !== Array) {
为:
async.waterfall = function (tasks, callback) {
callback = callback || function () {};
if (!Array.isArray(tasks)) {
有一些拉动请求可以解决这个问题,所以希望很快就会解决这个问题。