无法从nativescript worker访问angular服务
我遵循本教程创建背景线程, 这适用于简单的情况,但我有 app.module.ts无法从nativescript worker访问angular服务,angular,multithreading,nativescript,Angular,Multithreading,Nativescript,我遵循本教程创建背景线程, 这适用于简单的情况,但我有 app.module.ts @NgModule({ declarations: [AppComponent], bootstrap: [AppComponent], imports: [ NativeScriptModule, NativeScriptRouterModule, NativeScriptHttpModule, NativeScriptF
@NgModule({
declarations: [AppComponent],
bootstrap: [AppComponent],
imports: [
NativeScriptModule,
NativeScriptRouterModule,
NativeScriptHttpModule,
NativeScriptFormsModule,
NativeScriptRouterModule.forRoot(appRoutes),
LoginModule,
],
providers: [
HttpService,
UserService,
LogService,
DatabaseService
],
schemas: [NO_ERRORS_SCHEMA]
})
如何在w.onmessage()中使用像UserService这样的服务,而不使用依赖项注入。或者如何将可注入类与w.onmessage()一起使用不幸的是,您不能。NS Worker在完全不同的上下文中运行,没有共享内存
我建议主要使用worker来处理繁重的数据并将其发送回主线程。唯一的其他选项是依赖项注入和复制代码。这是否意味着,我只需替换当前的UserService.ts(添加在app.module.ts中),而是创建一个普通的(不可注入的)新服务文件,并手动导入实例化所有必需的依赖项(Http,dbService)?我可以简单地使用工作文件中相同的UserService吗?不能使用相同的UserService。您可以通过使用
Injector.create
实例化一个新的用户服务,使用非角度风格的东西,或者简单地与postmessage通信。请允许我问一下,为什么要在worker中使用UserService?感谢您的重播,现在更有意义了。。在这种情况下,我一直在使用UserService获取和更新用户(这种情况在一定的时间间隔内再次发生),而这个过程大约需要2-3分钟,在这种情况下,我只需阻塞UI。因此,考虑将其移动到worker,以便流程在后台运行,而不会干扰UI。事实证明,worker的工作方式与angular flow不同。您可以这样做:使用UserService发出HTTP请求以获取大量数据(这不会阻塞UI)。通过postmessage将此数据发送给工作人员并对其进行处理。完成后,将处理后的数据发送回并在应用程序中使用。我们有一个类似的用例:我们从Web服务获取大量数据,将其发送给工作人员,工作人员将其存储在sqlite中,完成后返回。然后我们进行sqlite查询(