【问题标题】:Run tasks in background in NativeScript在 NativeScript 中后台运行任务
【发布时间】:2016-09-05 19:55:21
【问题描述】:

我正在使用 NativeScript 2.0,并且正在开发一个 Android 模块不允许在主线程中运行!! p>

有没有可以用来在后台线程中运行函数的模块?

或者是否可以在“原生”JavaScript 代码(不是 TypeScript!)中使用类似 AsyncTask 的类?

【问题讨论】:

    标签: javascript android multithreading android-asynctask nativescript


    【解决方案1】:

    nativescript 添加了网络工作者。 https://docs.nativescript.org/angular/core-concepts/multithreading-model.html

    var worker = new Worker('myWorker');
    worker.postMessage('hello');
    worker.onmessage = function(msg) {
          console.log('answer from worker',msg.data);
    }
    

    在工作人员myWorker.js

        require('globals'); // necessary to bootstrap tns modules on the new thread
        onmessage = function(msg) {
            postMessage('bye');
        }
    

    【讨论】:

    • 我正在尝试运行您的代码,但每次都显示 ---> 找不到变量:Worker.. 有什么想法吗?
    • 您是否将项目更新到最新版本?因为最近添加了工作人员。
    • 是的。我还可以看到 Worker 类。
    • 我正在获取方法建议。我需要在哪里设置吗? eg-(组件需要添加到 app.module.ts -> @NgModule )
    • @HabibKazemi 感谢您的回答!前段时间,我实现了模块nativescript-tasks,它让NativeScript 中的WebWorkers 的新概念更容易使用。
    【解决方案2】:

    背景可以看这篇文章:http://developer.telerik.com/featured/benefits-single-threading-model-nativescript/

    也就是说,目前你最好的选择是使用这个模块来实现和运行 WebWorkers:https://github.com/NathanaelA/nativescript-webworkers

    【讨论】:

      【解决方案3】:

      我认为你的答案可以在这篇文章中找到http://developer.telerik.com/featured/benefits-single-threading-model-nativescript/

      基本上,当前支持的唯一选项是将代码封装到用原生 Android 编写的插件中。该团队正在努力支持某种类似于 Web Worker 的线程选项,但目前没有任何支持。

      【讨论】:

      • 该链接不再可用。
      【解决方案4】:

      正如 Nativescript demo App 所证明的那样,单线程模型很好,因为在 UI 线程上运行一切都非常快。但是如果你需要后台任务以防耗时操作,Nativescript 引入了Workers API

      我们知道这是网络世界中的网络工作者。请务必记住,每次启动新的工作线程时,都会增加应用的资源和内存占用。

      更多阅读可以参考this博客。

      【讨论】:

        【解决方案5】:

        你应该看看网络工作者:

        Web Workers 为 Web 内容在后台线程中运行脚本提供了一种简单的方法。工作线程可以在不干扰用户界面的情况下执行任务。

        在此处查看更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

        【讨论】:

        • 问题是关于 NativeScript - 而不是 web。
        猜你喜欢
        • 1970-01-01
        • 2015-05-05
        • 2023-03-05
        • 1970-01-01
        • 2020-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多