首页 > 解决方案 > 使用 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

有人可以请教吗?

标签: node.jsadonis.jszone.js

解决方案


这是一个已知问题,目前zone.js不支持 native async/await


推荐阅读