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