Если вы переключитесь в библиотеку request-promise
для выполнения ваших запросов, то она будет возвращать обещание для каждого запроса, а затем вы можете использовать Promise.all()
, чтобы узнать, когда они все будут выполнены.
Ваш коднемного неполный по ряду тем, например, что делать, когда вы сталкиваетесь с пустым телом и как именно вы хотите построить окончательные данные result
.Итак, позволяя вам заполнить эти детали, вот общая структура, которая будет работать для вас:
const rp = require('request-promise');
let type_list = [], status_list = [];
Promise.all(deals.map(item => {
let options = {
method: 'GET',
uri: 'https://api.cortellis.com/api-ws/ws/rs/deals-v2/deal/' + item + '?fmt=json',
auth: auth
};
let constant = constants.collection('clarivate');
return rp(options).then(body => {
if (body.length !== 0) {
try {
let data = JSON.parse(body).dealRecordOutput;
type_list.push(data.Type);
status_list.push(data.Status)
} catch(e) {
// log and skip items with bad JSON
console.log(e);
}
}
});
})).then(() => {
// all requests done here
let result = {};
// put code here to create result using type_list and status_list
res.status(200).json({data: result});
}).catch(err => {
// got an error in one of the requests
console.log(err);
res.sendStatus(500);
});