Dies ist mein Code:async.each nicht das Ergebnis geben?
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
});
: Ich bin Methoden aysnc. Ich bin nicht in der Lage, das Ergebnis zur endgültigen Funktion zu übergeben.
Sie können ein Objekt über dem ersten Async-Block deklarieren und dann eines der Ergebnisse anhängen und im letzten Callback diesen verwenden. Wenn Sie Express verwenden, können Sie das 'req'-Objekt für dasselbe verwenden. Aber Sie müssen diesen Codeblock in mehreren Middleware brechen, es ist ziemlich verschachtelt und damit fehleranfälliger und schwer zu verstehen. –
Verwenden Sie 'async.map' anstelle von' each' –
verwenden Sie mysql? Ich denke, dass Sie Code viel sauberer bekommen können –