Я читаю ссылки из текстового файла и делаю запросы с помощью Nightmare JS, чтобы получить некоторые данные.Поскольку я хочу дождаться завершения каждого запроса, я использую библиотеку синхронизации для циклического перемещения по ссылкам и выполнения функции запроса, и только после ее завершения перейдем к следующей итерации.Вот мой код:
const Nightmare = require('nightmare');
const fs = require('fs');
const async = require('async');
const url = 'https://lojaonline.claro.com.br/celular';
const lerArquivo = () => {
//var links = []
/*lr.eachLine('links.txt', function(link, isUltimoLink) {
console.log(link);
links.push(link);
if (isUltimoLink) {
return false; // para de ler
}
});*/
var links = require('fs').readFileSync('links.txt', 'utf-8').split('\n')
async.each(links, getPrecos, function(erro){
if(erro){
console.log('Erro: ');
console.log(erro);
}else{
console.log('Ok');
}
});
}
function getPrecos (endereco) {
console.log('Recuperando dados de ' + endereco);
const nightmare = new Nightmare({show: false, gotoTimeout: 999999999, waitTimeout: 999999999});
//acessando a página
try{
nightmare.goto(endereco).wait('input[id="edit-cep-part1"]')
.type('input[id="edit-cep-part1"]', '51030')
.wait('input[id="edit-cep-part2"]')
.type('input[id="edit-cep-part2"]', '560')
.click('input[value="Confirmar"]');
}catch (e){
console.error(e);
}
//recuperando as informações
try{
nightmare.wait('#plans-tab').evaluate(function(){
return Array.from(document.querySelectorAll('tr.body')).map(element => element.innerText);
})
.end()
.then(function(result){
console.log(result);
});
}catch(e){
console.error(e);
}
};
lerArquivo();
Я хотел вывести что-то вроде этого:
console.log('Recuperando dados de ' + link1);
//
//data
//
console.log('Recuperando dados de ' + link2);
//
//data
//
console.log('Recuperando dados de ' + link3);
//
//data
//
Но я получаю:
console.log('Recuperando dados de ' + link1);
console.log('Recuperando dados de ' + link2);
console.log('Recuperando dados de ' + link3);
И тогда данныенеправдоподобным.Это означает, что цикл не ожидает завершения функции.Что мне здесь не хватает?