node.js - Node-Webkit 中的 NodeJs Async.waterfall

标签 node.js asynchronous node-webkit node-async

我正在尝试在node-webkit应用程序中使用nodejs异步模块( waterfall 方法),但它无法正常运行。它似乎直接跳到链中的最后一项,而忽略其他所有内容。不过我的代码在nodejs 中运行得很好。我认为这可能是我的代码,但即使异步文档中的以下示例也是如此。

 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']
});

最佳答案

这是 async 模块的一个错误,Github 上有一个关于此的未决问题 ( issue #302 。) 问题是当 Node 创建新环境时(使用 vm 模块),数组检查内部使用的 async 无效。

我通过将 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)) {

有一些拉取请求可以解决这个问题,所以希望这个问题很快就能得到解决。

关于node.js - Node-Webkit 中的 NodeJs Async.waterfall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17394305/

相关文章:

mysql - sequelize - 如何添加额外的字段

c++ - 使用use_future的多播Boost Asio async_recieve_与async_send_to不能同时使用

C# - 异步/等待打印顺序

javascript - 禁用 NodeWebkit 中的所有快捷方式?

node-webkit - 启动node-webkit时是否可以指定 "main"文件

Node.js Gulp src/dest 4.0 行为与 Gulp 3.6

node.js - mongodb 在 linux node.js 上安装错误

javascript - 如何使用 for/loop (forEach) 将多个文件上传到 Google Drive API

mysql - 在循环内使用 sequelize 更新多行

node.js - nwjs 应用程序 javascript 保护?