![](/img/trans.png)
[英]Problem with promises / async / await function not waiting for response
[英]Waiting for connection with promises or async/await
好吧,我放棄了搜索。 有人可以幫我解決整個JavaScript異步行為嗎? 我是JavaScript的新手。 我要實現的目標:
打開到我的sql數據庫的連接。 將該連接存儲到變量。 在我的以下代碼中使用此連接。
問題:連接的打開是異步的,代碼在其上運行並且我的連接變量是undefined
。
那么,如何在異步功能之外等待這些功能完成?
我的代碼:
'use strict';
const mssql = require('mssql');
let config = {...} // everything works inside here
let connection;
let connectFunction = async () => {
return mssql.connect(config);
};
let result;
connectFunction().then(resolve => {
connection = resolve;
connection.request().query('SELECT * FROM users').then(result => {console.log(result);});
// This would work, BUT I dont want to be stuck inside a thenified or async function
});
connection.request().query('SELECT * FROM users').then(result => {console.log(result);});
// This does not work, because the connectFunction would not be awaited.
我想稍后再使用打開的連接,因此在connectFunction().then
內部工作將是很愚蠢的,因為這將在每個查詢上打開連接。
我該如何解決最佳方法?
您可以將多個.then
添加到同一諾言,因此,如果您願意這樣做:
let connection = connectionFunction();
您可以在任何地方重用該連接:
connection.then(db => {
db.request().query("...");
});
connection.then(db => {
db.request().query("...");
});
那么,如何在異步功能之外等待這些功能完成?
很快將有頂級await
,它使您可以編寫:
let connection = await connectionFunction();
那么connection
將包含連接本身而非承諾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.