【问题标题】:Node Async with functions节点异步与函数
【发布时间】:2017-03-31 15:48:23
【问题描述】:

我正在尝试使用具有 2 个功能的 Async 模块,这是代码。出了点问题,console.dir 正在工作,但 function(err, results) 中的最后一个不起作用。谁能帮帮我?

我要做的最后一步是渲染 oftArrayFullInfooftNextInfo

async.parallel({
        one: function(callback){
            auxFunctions.foofunc1(foo1, foo1, function(oftArrayFullInfo){
                console.log("****** ASYNC 1 ARRAY");
                console.dir(oftArrayFullInfo);
                callback(oftArrayFullInfo);
            });
        },
        two: function(callback){
            auxFunctions.foofunc2(foo1, foo1, function(oftNextInfo){
                console.log("****** ASYNC 2 ARRAY");
                console.dir(oftNextInfo);
                callback(oftNextInfo);
            });
        }
    },
    function(err, results){
        console.log("****** RENDER 1");
        console.dir(results.one);
        console.log("****** RENDER 2")
        console.dir(results.two);
        //res.render('myView', {title: 'Job Info', oftArrayFullInfo}, {title: 'Next Jobs Info', oftNextInfo});
    });

【问题讨论】:

    标签: node.js async.js


    【解决方案1】:

    您的主要问题是您没有正确调用回调。

    async 回调和 Node.js 中的异步回调通常采用两个参数:第一个用于传递任何错误(或 null,如果没有任何错误),第二个用于传递传递结果。

    你只用第一个参数调用它们:

    callback(oftArrayFullInfo);
    

    这会让async认为函数失败了,这会导致最终回调中的results未定义。当您随后尝试访问results.one 时,将引发错误。

    要解决这个问题,您应该正确调用回调:

    callback(null, oftArrayFullInfo)
    callback(null, oftNextInfo)
    

    并且,正如已经建议的那样,您应该取消注释 res.render()

    最终,您还应该让辅助函数(auxFunctions.foofunc1auxFunctions.foofunc2)遵守相同的调用约定。

    【讨论】:

      【解决方案2】:

      好的,你做的一切都是正确的,除非你将数据从 re.render() 发送到你的模板,你必须以键值对的形式发送。所以 intead

      res.render('myView', {title: 'Job Info', oftArrayFullInfo}, {title: 'Next Jobs Info', oftNextInfo});
      

      你应该使用

      res.render('myView', {title: 'Job Info', arrayFullInfo : oftArrayFullInfo}, {title: 'Next Jobs Info', nextInfo : oftNextInfo});
      

      现在您可以使用模板中的键名 arrayFullInfo 和 nextInfo 访问这些值

      【讨论】:

        猜你喜欢
        • 2015-07-25
        • 2021-10-29
        • 1970-01-01
        • 2018-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-17
        相关资源
        最近更新 更多