我无法将异步函数的结果返回给我正在调用的路由。我如何成功做到这一点?
我正在尝试从文件token_generator.js导出令牌,并使用Express在路由('/')上显示它。我从其他文件导入功能。
const tokenGenerator = require('./src/token_generator');
我有一个简单的方法可以调用该函数输出。
app.get('/', async function (request, response) {
const identity = request.query.identity || 'identity';
const room = request.query.room;
response.send(tokenGenerator(identity, room));
});
在我的token_generator中,我使用async / await来检索和生成令牌。我在导出之前对其进行了登录,并且该日志出现在控制台中,但从未进入该网页。
async function tokenGenerator(identity, room) {
const token = new AccessToken(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_API_KEY,
process.env.TWILIO_API_SECRET
);
let grant = new VideoGrant();
token.identity = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 8);
grant.room = await getRoomId(room);
token.addGrant(grant);
console.log(token.toJwt());
return await token.toJwt();
}
module.exports = tokenGenerator;
如何获取令牌以显示在网页上?我有一个与此类似的代码的工作版本,但是与我以前的代码相比,我想使用async / await作为更好的实践。我想必须以其他方式调用Express中的函数吗?谢谢
答案 0 :(得分:0)
app.get('/', async function (request, response) {
const identity = request.query.identity || 'identity';
const room = request.query.room;
// Since your tokenGenerator is async, you need await to get its result
response.send(await tokenGenerator(identity, room));
});