Я пытаюсь сделать удаленный вызов в моем приложении node.js на внешний URL, затем проанализировать этот запрос и выполнить действие, основанное на возврате. Я использую экспресс и MySQL.
Мне удалось получить удаленный URL-адрес, однако у меня какое-то состояние гонки, когда мой вывод постоянно меняется и не является надежным. Я пытался использовать async / await, но не смог.
Эта функция вызывается для запуска приложения:
function lista(servidores) {
return new Promise(function(resolve, reject) {
var sql = ' SELECT sv.id as svid, sv.ip as svip'+
' FROM servidores sv'
dbconfig.conexao.query(sql, function (err, result, fields) {
Promise.all(
result.map(row => {
var ipsv = row.svip;
var urlprobe = 'http://201.182.96.14:8000/PING/' + ipsv;
fetch(urlprobe, {
method: 'get',
headers: {
'Accept': 'application/json, application/xml, text/plain, text/html, *.*',
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},})
.then(
response => response.json(),
error => console.log('Ocorreu um erro', error)
)
.then(
json => console.log(json),
)
})
).then(result => result);
return resolve();
});
})
}
Когда все эти функции вызываются, все работает нормально до функции monitora (). Вывод является случайным, в зависимости от того, какой выбор отвечает быстрее, и, следовательно, результат не является надежным. Идеал в том, что
monitora () выполняет каждую выборку отдельно, а затем обрабатывает if, основываясь на каждом из результатов.
@ edit: я отредактировал код и произвел выборку непосредственно в основной функции, однако я все еще получаю противоречивые результаты, например, если где-то было кэширование.