gpt4 book ai didi

javascript - asyncawait 不等待

转载 作者:行者123 更新时间:2023-11-28 12:12:51 25 4
gpt4 key购买 nike

我在 Typescript 中有以下内容:

import sql = require("mssql");
const config: sql.config = {....
}

const connect = async() => {
return new Promise((resolve, reject) => {
new sql.ConnectionPool(config).connect((err) => {
if (err) {
reject(err);
} else {
console.log("CONNECTED");
resolve();
}
});
});
};

(async() => {
await connect().then(
() => {
console.log("Connection pool created successfully.");
}).catch((err) => {
console.error(err);
});
})();

console.log("Now proceeding to load...");

我总是按以下顺序获取控制台输出:

Now proceeding to load...
CONNECTED
Connection pool created successfully

我做错了什么?如何实现仅在其之前的所有事件执行完毕后才执行最后一行代码?

最佳答案

您正在调用 (async () => {... 函数,这是异步的,然后直接继续打印加载消息。

您还混合和匹配 .then().catch()async/await/catch 错误处理 - 我会重构如下内容:

import sql = require("mssql");

const connect: (config: sql.config) => Promise<sql.ConnectionPool> = async config =>
new Promise((resolve, reject) => {
const pool = new sql.ConnectionPool(config);
pool.connect(err => {
if (err) return reject(err);
console.log("CONNECTED");
resolve(pool);
});
});

const config: sql.config = {
/*...*/
};

(async () => {
console.log("Now proceeding to load...");
try {
const pool = await connect(config);
console.log("Connection pool created successfully.");
} catch (e) {
console.error(e);
return;
}
})();

关于javascript - asyncawait 不等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com