У меня есть задача, которая требует от меня сохранения данных, возвращенных из запроса SQL в список в JavaScript.Проблема, с которой я сталкиваюсь, заключается в асинхронной природе JavaScript (NodeJS).Запросы не выполняются в синхронном порядке, и, следовательно, точки данных не сохраняются в списке последовательно.Я пытался использовать обещания, но не повезло.Я довольно плохо знаком с JavaScript и застрял с этой проблемой около 12 часов.
Я пытался использовать обещания, async.waterfall и другие функции в модуле async, но ни одна из них не могла решить эту проблему.
query = "SELECT count(*) as users from tb"
query1 = "SELECT count(*) as collats from ct"
var list = [];
var user;
conn.connect().then(function() {
var req = new sql.Request(conn);
req.query(query).then(function (data) {
user = (data.d[0].users);
list.push(user);
})
.catch(function (err) {
console.log(err);
conn.close();
});
req.query(query1).then(function (data) {
list.push(data.d[0].coll);
conn.close();
console.log("After closing second connection the value in list as of now is ",list[0],list[1]);
**strong text**
})
.catch(function (err) {
console.log(err);
conn.close();
});
Ожидаемый результат должен быть: После закрытия второго соединениязначение в списке на данный момент составляет 334,23.// (334 = список [0] и 23 = список [1])
Фактический результат: иногда он совпадает с ожидаемым.Но в некоторых сценариях выводится «После закрытия второго соединения значение в списке на данный момент составляет 334, неопределенное»
Это из-за асинхронной природы Javascript.Как последовательно вставить элементы в список?