node.js - 使用 await 命令后丢失 zone.js 属性
问题描述
我在我的 AdonisJs 项目中使用 zone.js 来创建执行上下文。我有一个创建区域的中间件,如下所示:
async handle ({ request, response }, next) {
let token = jwtDecode( request.header('Authorization') )
// Create a zone so we have execution context throughout the flow
return Zone.current.fork({
name: Math.random(),
properties: {
username: token.username,
user_id: token.sub
}
}).run( async () => {
// call next to advance the request
await next()
})
}
在我的控制器内部,我可以访问我的区域属性
let username = Zone.current.get('username')
但是,当我使用该await
命令时,我无法访问区域属性,所有这些都是未定义的。例如:
作品
let username = Zone.current.get('username') // ALL OK
let order = await Order.find(params.id);
不行
let order = await Order.find(params.id);
let username = Zone.current.get('username') // UNDEFINED
有人可以请教吗?
解决方案
这是一个已知问题,目前zone.js
不支持 native async/await
。
推荐阅读
- azure - 查询未返回 TimeGenerated 列。请编辑查询并包含 TimeGenerated 列
- laravel - 错误:运行 composer update 命令后在 laravel 8 中使用护照 10
- sql - 用连接在 SQL 中求和 2 行
- python - TypeError:注册的事件必须是协程函数discord.py
- spring - 当从 amqp 转换消息发生错误时,弹簧整数 amqp 不会重试
- c# - C# VSTO - 如何将活动表保存到新的工作簿/新文件?
- python - 在python中读取具有动态名称的配置文件条目
- r - 有没有办法用 RD 对象制作数据框?
- laravel - Laravel 8 上的 League/flysystem-aws-s3-v3 其他软件包需要较低版本
- r - 在 for 循环期间丢失行名