0
我試圖使用async.parallel
執行兩個Mongoose查詢,然後對結果進行處理。然而,當我試圖訪問這些結果results[0]
和results[1]
他們返回承諾:如何從async.parallel訪問結果?
Promise {
_c: [],
_a: undefined,
_s: 0,
_d: false,
_v: undefined,
_h: 0,
_n: false } ]
我還是用異步和承諾熟悉自己,我不知道如何實際訪問應該返回的文件由兩個查詢。任何幫助將不勝感激!
我目前的功能:
export const getItems = (req, res) => {
const itemId = "57f59c5674746a6754df0d4b";
const personId = "584483b631566f609ebcc833";
const asyncTasks = [];
asyncTasks.push(function(callback) {
try {
const result = Item.findOne({ _id: itemId }).exec();
callback(null, result);
} catch (error) {
callback(error);
}
});
asyncTasks.push(function(callback) {
try {
const result = User.findOne({ _id: personId }).exec();
callback(null, result);
} catch (error) {
callback(error);
}
});
async.parallel(asyncTasks, function(err, results) {
if (err) {
throw err;
}
const result1 = results[0];
const result2 = results[1];
console.log('result' + result1);
});
}
您應該使用* * async.js *或* promises,b不是兩個。 – Bergi
@Bergi - 我想補充一點,但實際上找不到任何(合理的)討論,爲什麼使用這兩個都是一個壞主意 - 我同意這是一個壞主意,我不能證明爲什麼:p –
@JaromandaX我想我在我的幾個答案中討論過,但是也找不到一個好的聯繫。問題的關鍵在於,當您將nodeback與承諾混合使用時,執行正確的錯誤處理更容易出錯,並且您基本上喪失了承諾對回調的所有優勢。 – Bergi