![](/img/trans.png)
[英]how to execute a javascript code right after a function has been defined?
[英]How can I execute a function right after an "await" request has been completed?
關於 Promises 和 async 等的整個事情讓我發瘋。 每當我連接到數據庫時,我只需要運行一個函數。 (這段代碼工作正常,但我不知道什么時候await
完成。幫助!
async function connectToDB() {
console.log("Connecting to database...");
database = await pool.connect();
// I want to run some function only after the connection has been made.
}
我正在使用 node.js 和 postgreSQL 作為數據庫管理器。
異步函數返回一個Promise
,當您await
一個異步函數時,您表示該腳本在該函數完成之前不應繼續
您可以替換// I want to run some function only after the connection has been made.
使用您的代碼,該代碼只會在pool.connect()
完成后運行。
您也可以await connectToDb()
因為您也將其設置為異步函數。
await connectToDb();
// other code that is run immediately after connectToDb finishes
// --- OR ---
connectToDb().then(() => {
// other code that is run immediately after connectToDb finishes
});
如果pool.connect()
返回一個在完成后解決的承諾,那么您只需將您的函數調用放在await
之后的下一行,並且在pool.connect()
解決其承諾之前不會被調用。
如果您沒有使用pool.connect()
返回承諾的數據庫版本,那么您需要為支持承諾的數據庫切換到不同的模塊。
而且,當然,如果pool.connect()
承諾拒絕,那么它將跳過函數的其余部分(類似於throw
)並且您的功能的調用者將看到對async
函數返回的承諾的拒絕。
async function connectToDB() {
console.log("Connecting to database...");
database = await pool.connect();
callSomeFunctionHere(); // this will happen after pool.connect() resolves
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.