簡體   English   中英

等待與promise或async / await的連接

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

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