Это псевдокод того, чего я пытаюсь достичь.Сначала мне нужно получить список URL-адресов из тела запроса, затем передать эти URL-адреса в функцию запроса (используя модуль запроса), которая будет получать данные из каждого URL-адреса, а затем сохранять эти данные в MongoDB.После того, как все запросы завершены, включая сохранение данных на сервер только тогда, он должен отправить ответ.
app.post('/', (req, resp) => {
const { urls } = req.body;
urls.forEach((url, i) => {
request(url, function (err, resp, body) {
if (err) {
console.log('Error: ', err)
} else {
// function to save data to MongoDB server
saveUrlData(body);
console.log(`Data saved for URL number - ${i+1}`)
}
})
});
// Should be called after all data saved from for loop
resp.send('All data saved')
})
Я попробовал этот код, и, конечно, функция resp.send () будет работать без заботы, еслизапрос выполненИспользуя этот код, я получаю на консоли такой результат:
Data saved for URL number - 3
Data saved for URL number - 1
Data saved for URL number - 5
Data saved for URL number - 2
Data saved for URL number - 4
Я мог бы написать их во вложенной форме, но переменная urls
может иметь любое количество URL-адресов, и поэтому она должна быть впо крайней мере, из моего понимания.Я хочу, чтобы запросы выполнялись последовательно, то есть он должен разрешать 1-й URL, а затем второй и т. Д., И когда все URL-адреса выполняются только тогда, он должен ответить.Пожалуйста, помогите!