atzcl / z

基于 MidwayJS(EggJS) + TypeScript 的多模块应用 [ NodeJS 版 ]
129 stars 20 forks source link

请教一个问题,jobs 里怎么调用 service 层的方法 #28

Closed lblblong closed 4 years ago

lblblong commented 4 years ago

可以使用像这样调用吗

const ctx = app.createAnonymousContext();
ctx.services.xxx.xx()
atzcl commented 4 years ago

注入即可 https://midwayjs.org/injection/guide.html#inject

lblblong commented 4 years ago

看了midway和injection的文档好像没有看到注入 app 的 https://midwayjs.org/midway/guide.html#%E6%A1%86%E6%9E%B6%E9%BB%98%E8%AE%A4%E6%B3%A8%E5%85%A5

而且job的调用方式可以注入 ctx 吗

atzcl commented 4 years ago

太久没弄这块了,都忘记是咋写的了。。

这里的 jobs 是独立于 midwayjs 的,如果你需要获取 app 的信息,你只能是透传 dispatch 方法来传递 或者是用 injection 的 attachPropertyDataToClass 来取,另外 midwayjs 本身也没有做 app ioc 绑定

在 job 里面是不能注入 ctx 的,一个是跟上面的原因一样,另一个是因为 Queue 是一个进程的单例,你也只能是通过 dispatch 来传递相关数据