(item, i) {
idRequest.url = 'https://url'+item;
request(idRequest, (error, response) => {
response => {
parseString(response.body, (error, response) => {
response => {
arr2.push(response.convert[0]);
},
error => {
console.log('Error occured while parsing data from response');
};
});
},
error => {
console.log('Error occured while getting response from site');
};
});
if (arr.length - 1 <= i)
resolve();
});
})
.then(() => {
console.log(`Arr2.length - ${arr2.length}`);
});
Тут я получаю xml ответы и паршу данные в массив, но проблема в том, что это происходит асинхронно, а мне необходимо дождаться получения всех ответов, т.е. полностью забить массив и только потом разрешить программе продолжить выпонять другой код
Видел решения в виде 'поставь setTimeout, тогда дальше не пойдет', но я не могу знать сколько времени уйдет на все запросы
В ноду только вошел, знаний нет почти, так что вопросы:
-Как заставить ноду ждать окончания получения всех ответов от сервера, если это асинхронная процедура?
-Можно ли это сделать не асинхронно?
Запускаю через .bat
node app.js
pause
В итоге происходит pause -> выход из программы до получения результата...
Код на gist.github.com
Во-первых, ты не сохранил никуда промис из new Promise в самом начале.
Обсуждают сегодня