Я надеюсь, что это простые вопросы, и я просто пропустил что-то простое. У меня есть цепочка обещаний, возвращающих функции, которые выполняются с использованием .then (). Моя последняя функция берет данные, которые я возвращаю, и форматирует в правильный формат, который затем передается обратно клиенту. Проблема, с которой я столкнулся (я думаю), заключается в том, что сервер отправляет клиенту переменную ff до того, как обещание от функции форматирования будет решено. Что меня смущает, так это то, что когда я регистрирую переменную ff, она регистрирует все данные, как и ожидалось.
Любые мысли о том, почему это происходит, что я делаю неправильно, и самое главное, как решить эту проблему ?
app.get("/subData", function(req, res) {
getConnection().then(function() {
return getSQL();
}).then(function(sql) {
return executeQuery(sql);
}).then(function(data) {
return formatData(data);
}).then(function(ff) {
console.log(ff);
res.status(200).send(ff);
}).catch(function(err) {
console.log("ERR:");
console.log(err);
res.status(405).send(err);
});
});
Вот функция окончательного формата данных:
function formatData(data) {
var finArr = Array();
return new Promise(function(resolve, reject) {
data.rows.forEach(function(row, fin) {
var tempArr = Array();
row.forEach(function(itm, pos) {
var ttl = data.metaData[pos].name;
var val = itm;
tempArr[ttl] = val;
});
finArr.push(tempArr);
if(fin + 1 == data.rows.length) {
resolve(finArr);
}
});
});
}