0
這是我的代碼:async.each沒有給出結果?
var shopId=[1,2,3,4];
async.each(shopId,function (item,callback) {
model.client.query("SELECT categoryId shopId=? ", [shopId], function (err, rows) {
if (rows.length > 0) {
var asyncData = rows;
//categoryId will be in the format [1,2,3,4]
async.each(asyncData,function (item, callback) {
var categoryId = item.categoryId;
async.series([
function (callback) {
model.client.query("select categoryName from category where categoryId = ?", [categoryId], function (err, data) {
callback(null, data);
});
}],
function (err, results) {
item.category = results[0];
callback();
});
},function (err) {
callback(asyncData); //getting data here
});
}
});
},function (err,result) {
res.json(result); //not getting data here
});
我是新來aysnc方法。我無法將結果傳遞給最終功能。
你可以在第一個'async'塊之上聲明一個對象,然後在其中添加任何結果,並在最後的回調中使用它。如果你使用express,你可以使用'req'對象。但是你必須在多箇中間件中打破這個代碼塊,它是嵌套的,因此更容易出錯並且難以理解。 –
使用'async.map'而不是''' –
你使用的是mysql嗎?我認爲你的代碼可以得到更清潔 –