私は私の頭をラップトラブルを抱えている周りの非同期/のawait構文非同期/待つ予想される動作
このコードでは、「接続」しても、コンソールにログインしますない理由私は何を把握することができないようすることですmysqlへの接続にエラーがあるとき。
mongoose.Promise = Promise;
function connection() {
//return a promise to be consumed in an async function
return new Promise((resolve, reject) => {
mongoose.connect('mongodb://localhost/testdatabase');
let db = mongoose.connection;
let sw = mysql.createConnection({
host: 'localhost',
user: 'reporting',
Promise: Promise,
database: 'testdatabase'
});
//Only resolve if both database connections are made successfully
sw.then(() => {
db.on('error', (err) => {
reject(err);
});
db.once('open',() => {
resolve(db);
});
}).catch((e) => {
reject(e);
})
});
}
//Await connection and return true or false for more synchronous code style
async function connect() {
let connected = false;
try {
//should pause execution until resolved right?
await connection();
connected = true;
} catch (e) {
//Makes it here successfully
console.error(e);
connected = false
} finally {
return connected
}
}
if (connect()) {
//This code also gets fired?
console.log('connected');
}
ありがとうございました。私は、非同期関数が返すことを約束していません。私はこれがプロミスよりずっと優れているかどうか分からない。パラダイムだ。 – richbai90
@ richbai90これは、 'then'呼び出しを入れ子にすることなく制御構造を使用できるようにする文法的な砂糖です。しかし、セマンティクスは同じです。 'await'なしでどのように見えるかについては、下記のnem035の答えを参照してください。 – Bergi