【发布时间】:2021-10-29 17:42:10
【问题描述】:
我正在尝试将带有诺言的不同代码转换为异步等待。因为我是节点新手,并且对 Promise 不太了解,任何人都可以通过以下示例帮助我。我的 vs 代码没有突出显示 promise 语法。
module.exports = {
execSqlQuery: function (procedure, parameters) {
return new Promise(function (fulfill, reject) {
var request = new sql.Request(connPool);
parameters.forEach(function (parameter) {
request.input(parameter.name, parameter.type, parameter.value);
});
request.execute(procedure, function (err, recordSets) {
if (err) {
reject(err);
}
else {
fulfill(recordSets);
}
});
});
},
【问题讨论】:
-
await用于等待 promise 解决。在您的情况下,由于request.execute(...)是基于回调的,您首先需要一个围绕request.execute(...)的promise 包装器,并且您已经拥有execSqlQuery的形式。你可以await拨打execSqlQuery:const data = await execSqlQuery(...) -
您使用的是哪个 SQL 库,因为某些库本身就支持 Promise 方法,并且您不需要用 Promise 包装您的数据库执行。
标签: javascript node.js async-await promise