Учитывая ситуацию, когда вам нужно получить данные из нескольких асинхронных функций или обещаний, что является лучшим способом сбора и сохранения данных, чтобы они могли быть использованы после завершения. Примером может быть несколько запросов к базе данных, которые необходимо отображать на одной странице.сбор данных из нескольких асинхронных функций (обещаний)
Я столкнулся с приведенным ниже кодом, который выглядит как сплошной шаблон для меня, но, будучи новичком в асинхронной игре, не уверен.
function complexQuery(objectId) {
var results = {};
return firstQuery.get(objectId).then(function (result1) {
results.result1 = result1;
return secondQuery.find();
})
.then(function (result2) {
results.result2 = result2;
return thirdQuery.find();
})
.then(function (result3) {
results.result3 = result3;
return results;
});
}
complexQuery(objectId)
.then(function (results) {
//can use results.result1, results.result2, results.result3
res.render('dash', results); //example use
});
Каков наилучший способ справиться с такой ситуацией?
Редактировать для уточнения: Должно быть последовательно, запросы могут потребовать информацию из предыдущего результата обещания.
Если запросы должны быть последовательно, ваш код должен отражать это. – Bergi
Есть ли что-нибудь, на что не ответил [канонический дубликат] (http://stackoverflow.com/q/28250680/1048572)? Я склонен к закрытию, но не стесняйтесь редактировать и задавать более конкретный вопрос - возможно, с вашим реальным кодом. – Bergi