Nas*_*tro 3 javascript async-await es6-promise
目前我正在使用jwtnode.js 应用程序。我使用如下所示的jwt.sign()方法:
jwt.sign({
accountID: user.accountID,
email: user.email,
}, process.env.SECRET_KEY, (err, token) => {
if (err) throw err
res.json({token})
})
Run Code Online (Sandbox Code Playgroud)
我不想使用回调。我想将其转换为async/await. 据我所知,我必须new Promise用resole({})和返回reject(err)。但我不知道如何使用 sign() 方法中的 promise。任何帮助表示赞赏。谢谢!
JavaScript(以及像 Bluebird 这样的库)有一个内置的 promisify 函数 as util.promisify(),它将采用像这样的标准回调格式的函数并将它们转换为异步承诺。但是,您可以通过在新的 Promise 调用中包装您尝试承诺的函数来进行幕后工作并自己运行它。如果该实用程序失败,我会执行以下操作:
function sign(id, email, secret) {
return new Promise((resolve, reject) => {
jwt.sign({ accountID: id, email: email }, secret, (error, token) => {
if (error) {
reject(error);
} else {
resolve(token);
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其称为:
const token = await sign(user.accountID, user.email, process.env.SECRET_KEY);
Run Code Online (Sandbox Code Playgroud)