簡體   English   中英

如何在“等待”請求完成后立即執行函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM