Обновлено с примером Promise.
Я использую NodeJS, и у меня возникают проблемы с несколькими if
-статементами и return
-состояниями.
Я пытаюсь использовать Promise
, может показаться, что это путь.
Это мой пример кода:
const express = require('express');
const app = express();
const pgPromise = require('pg-promise')();
const db = pgPromise(CONNECTION_STRING);
app.use((req, res) => {
var message = "";
promise1 = new Promise((resolve, reject) => {
message += "promise1";
if (false) {
reject(message);
}
});
promise2 = new Promise((resolve, reject) => {
if (true) {
db.one('SELECT 1')
.then(row => {
message += " promise2";
resolve(message);
})
.catch(err => {
message += " error";
reject(message);
});
}
});
var printResult = (results) => {console.log("Results = ", results, "message = ", message)}
Promise.all([promise1, promise2]).then(printResult);
return res.json({ message: message });
});
app.listen(3000);
Кажется, он не ждет, пока Promise 2 завершит запрос к базе данных.
Как я могу убедиться, что запрос к базе данных выполнен перед возвратом какого-либо оператора?