繁体   English   中英

具有功能的节点异步

[英]Node Async with functions

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

我要做的最后一步是呈现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});
    });

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

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

您仅使用第一个参数调用它们:

callback(oftArrayFullInfo);

这将使async认为该函数已失败,这将导致最终回调的results不确定。 当您随后尝试访问results.one ,将引发错误。

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

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

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

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

好的,您做了所有正确的事情,除了当您将数据从re.render()发送到模板时,您必须发送键值对.so 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访问这些值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM