[英]Node Async with functions
我正在嘗試使用具有2個功能的異步模塊,這是代碼。 出了點問題, console.dir在起作用,但是函數(err,result)中的最后一個不起作用。 誰能幫我?
我要做的最后一步是呈現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});
});
您的主要問題是您沒有正確調用回調。
async
回調和Node.js中的異步回調通常使用兩個參數:第一個用於傳遞任何錯誤(如果沒有錯誤,則為null
),第二個用於傳遞結果。
您僅使用第一個參數調用它們:
callback(oftArrayFullInfo);
這將使async
認為該函數已失敗,這將導致最終回調的results
不確定。 當您隨后嘗試訪問results.one
,將引發錯誤。
要解決此問題,您應該正確調用回調:
callback(null, oftArrayFullInfo)
callback(null, oftNextInfo)
並且,正如已經建議的那樣,您應該取消注釋res.render()
。
最終,您還應該使輔助函數( auxFunctions.foofunc1
和auxFunctions.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.