Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从nativescript worker访问angular服务_Angular_Multithreading_Nativescript - Fatal编程技术网

无法从nativescript worker访问angular服务

无法从nativescript worker访问angular服务,angular,multithreading,nativescript,Angular,Multithreading,Nativescript,我遵循本教程创建背景线程, 这适用于简单的情况,但我有 app.module.ts @NgModule({ declarations: [AppComponent], bootstrap: [AppComponent], imports: [ NativeScriptModule, NativeScriptRouterModule, NativeScriptHttpModule, NativeScriptF

我遵循本教程创建背景线程,

这适用于简单的情况,但我有 app.module.ts

@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查询(