Nic*_*lai 4 node.js async-await
我正在尝试编写一个节点模块,以处理我的各种数据库调用.我想尽可能使用async/await,但我遇到了一些问题.
我一直在使用promises,并导出这些函数.例:
function GetUsernames() {
return new Promise(function (resolve, reject) {
sql.connect(config).then(function () {
new sql.Request()
.query("SELECT [UserName] FROM [Users] ORDER BY [LastLogin] ASC").then(function (recordset) {
resolve(recordset);
}).catch(function (err) {
reject(err);
});
});
});
}
Run Code Online (Sandbox Code Playgroud)
然后我导出如下:
module.exports = {
GetUsernames: GetUsernames,
GetScopes: GetScopes,
UpdateToken: UpdateToken,
SetOwner: SetOwner
};
Run Code Online (Sandbox Code Playgroud)
但是,我应该如何使用异步函数来使用node7中可用的async/await?
我还是只回复一个承诺吗?我试过这样做,但是当我在我的代码中调用它时,它不起作用.
const db = require("dataprovider");
...
var result = await db.GetUsernames();
Run Code Online (Sandbox Code Playgroud)
它给了我:
SyntaxError:意外的标识符
在db名称上(如果我只使用promise函数,则使用then().)
也许我的谷歌技能很糟糕,但在这个问题上,我没有设法谷歌我可以使用的任何东西.
在我的模块中,我如何制作一个异步功能,我可以在其他地方等待?
要打开await关键字,您需要将其置于异步函数中.
const db = require("dataprovider");
...
let result = getUserNames();
async function getUserNames() {
return await db.GetUsernames();
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://javascriptrambling.blogspot.com/2017/04/to-promised-land-with-asyncawait-and.html.
另外,就像一个FYI一样,它是一个用小写启动函数的代码约定,除非你从它返回一个类.