Итак, в настоящее время я создаю небольшое личное приложение для обучения, у меня есть сценарий, в котором я должен был использовать API других третьих лиц, но несколько для одного объекта. Например, у меня есть 1 панель инструментов для рендеринга, и я хочу сделать разные вызовы в разных местах, а продукт - объектом данных назад, который содержит три запроса ответа.NodeJS, Express и маршрутизация с внешними запросами
Например, на данный момент у меня есть что-то (похожее) ниже, которое делает запрос и возвращает эти данные вместе с другими данными из метода поиска и текущего сеанса пользователя. Прекрасно работает.
app.get('/profile', isLoggedIn, function(req, res) {
Object.find().exec(function (err, records) {
request('firstUrl', function(err, resp, body) {
res.render('profile.ejs', {
user : req.user,
records : records,
responseData : JSON.parse(body)
});
});
});
});
Но теперь я хочу сделать более одного запроса ... так что я не уверен, как это сделать, а также передовой опыт?
Ниже чувствует, что это не будет работать, и неаккуратно:
app.get('/profile', isLoggedIn, function(req, res) {
Object.find().exec(function (err, records) {
request('firstUrl', function(err, resp, body1) {
request('secondUrl', function(err, resp, body2) {
request('thirdUrl', function(err, resp, body3) {
res.render('profile.ejs', {
user : req.user,
records : records,
responseData1 : JSON.parse(body1),
responseData2 : JSON.parse(body2),
responseData3 : JSON.parse(body3)
});
});
});
});
});
});
Может кто-нибудь пролить немного света на этот счет?
Это отличный ответ, спасибо. Я пробовал вложенные операторы, и это действительно работает, но я собираюсь идти вперед и внедрять асинхронный процесс теперь, это намного лучше/более аккуратный способ сделать это и разоблачить объекты вместе. Еще раз спасибо! – Jamie
Работает отлично - еще раз спасибо! – Jamie
Рад это слышать! JavaScript Promises - это еще один способ сделать это, но в этом случае async.js, возможно, проще или лучше известно. –