节点异步与功能
Node Async with functions
我正在尝试使用具有 2 个函数的 Async 模块,这是代码。有问题,console.dir 正在工作,但 function(err, results) 中的最后一个不起作用。谁能帮帮我?
我想要做的最后一步是渲染 oftArrayFullInfo 和 oftNextInfo
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});
});
好的,你做的一切都正确,除了当你从 re.render() 发送数据到你的模板时,你必须发送键,值 pairs.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 访问这些值
您的主要问题是您没有正确调用回调。
async
回调和 Node.js 中的异步回调通常有两个参数:第一个用于传递任何错误(或者 null
如果没有任何错误),第二个用于传递结果。
您仅使用第一个参数调用它们:
callback(oftArrayFullInfo);
这会让async
认为函数失败,从而导致最终回调中的results
未定义。当您随后尝试访问 results.one
时,将抛出错误。
要解决此问题,您应该正确调用回调:
callback(null, oftArrayFullInfo)
callback(null, oftNextInfo)
而且,正如已经建议的那样,您应该取消注释 res.render()
。
最后,您还应该让您的辅助函数(auxFunctions.foofunc1
和 auxFunctions.foofunc2
)遵守相同的调用约定。
我正在尝试使用具有 2 个函数的 Async 模块,这是代码。有问题,console.dir 正在工作,但 function(err, results) 中的最后一个不起作用。谁能帮帮我?
我想要做的最后一步是渲染 oftArrayFullInfo 和 oftNextInfo
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});
});
好的,你做的一切都正确,除了当你从 re.render() 发送数据到你的模板时,你必须发送键,值 pairs.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 访问这些值
您的主要问题是您没有正确调用回调。
async
回调和 Node.js 中的异步回调通常有两个参数:第一个用于传递任何错误(或者 null
如果没有任何错误),第二个用于传递结果。
您仅使用第一个参数调用它们:
callback(oftArrayFullInfo);
这会让async
认为函数失败,从而导致最终回调中的results
未定义。当您随后尝试访问 results.one
时,将抛出错误。
要解决此问题,您应该正确调用回调:
callback(null, oftArrayFullInfo)
callback(null, oftNextInfo)
而且,正如已经建议的那样,您应该取消注释 res.render()
。
最后,您还应该让您的辅助函数(auxFunctions.foofunc1
和 auxFunctions.foofunc2
)遵守相同的调用约定。