Почему функция грузит всю память сервера? js
имеется код:
async function checkQuery(object) {
i = 0;
while (i < urls[1].length) {
sql = 'SELECT id FROM cases WHERE case_number="' + urls[2][i] + '"';
await connection.execute(sql, function(err, results, fields, rows) {
//console.log('... . Ошибка: ' + err + ', Данные: ' + results[0].objid + ', мета-данные полей: ' + fields + '.');
if(results[0] === undefined) {
console.log('Совпадение не найдено');
i++;
} else {
console.log('Такое дело есть!');
urls[0].splice(i, 1);
urls[1].splice(i, 1);
urls[2].splice(i, 1);
}
});
}
console.log(urls[2].length);
}
Почему-то он нагружает оперативную память сервера полностью. Может кто знает как это исправить?
Ответы (1 шт):
Автор решения: uberchel
→ Ссылка
У вас цикл не ждет ответа от connection, он работает синхронно, как вариант можно использовать новый вариант работы с for, либо вывести асинхронную функцию отдельно от цикла while
async function checkQuery(object) {
for (const item of urls[2]) {
await connection.execute('SELECT id FROM cases WHERE case_number="' + item + '"', function(err, results, fields, rows) {
if(results[0] === undefined) {
console.log('Совпадение не найдено');
} else {
console.log('Такое дело есть!');
urls[0].splice(i, 1);
urls[1].splice(i, 1);
urls[2].splice(i, 1);
}
});
}
}