gpt4 book ai didi

cordova - Phonegap 和 WebWorkers

转载 作者:行者123 更新时间:2023-12-04 01:44:22 25 4
gpt4 key购买 nike

我正在尝试编写一个 PhoneGap/Cordova 应用程序。

我正在尝试在 Web Workers 中做一些更长时间运行的背景工作。但是,我发现某些功能在 Web Workers 中不可用。
navigator.connection在主脚本中可用,但在 web worker 中未定义,navigator.geolocation 也是如此.

我也想从网络 worker 中访问一个 sql-lite 数据库。

关于如何在 PhoneGap/Cordova 中进行这样的后台操作的任何想法?

任何人都可以提供的任何帮助都会很棒。

最佳答案

首先你要明白Worker是一个新的线程或进程,不包括window和document对象。

Cordova 在 webview 和原生 API 之间创建了一个接口(interface)。如果您在工作人员中运行,则无法访问此 API 接口(interface),因此您无法使用插件或 cordova 核心。

我试图将cordova.js 脚本导入一个worker:

loadScript('../cordova.js');

但是当它没有找到窗口对象时会抛出一个错误。最后,模拟对象:
self.window = this;
self.window.document = this;
loadScript('../cordova.js');

Cordova 的脚本抛出“ReferenceError:提示未定义”。

另一方面,您需要了解,WebView 和 native 代码之间的通信是异步的。例如,如果您发送 SQLite 查询,您的 JavaScript 代码将继续运行,当查询被解析时,API 会向 WebView 发送一个事件并运行您的回调。

例如,我使用 worker 来加密数据,因为这个过程太难并且会导致阻塞。但是如果你需要使用cordova插件,你就不会有这个问题了。

有解释 to understand this .

对于 SQLite,我建议你使用 Cordova-SQLitePlugin .

如果您需要自己的hight-process,您可以了解如何制作插件: https://cordova.apache.org/docs/en/4.0.0/guide_hybrid_plugins_index.md.html

同时,您可以使用工作人员并发送和接收数据,但不能使用资源引用。请注意,使用 api(如 SQLite),这将是异步的,您无需打开另一个进程来执行它们。您可以将结果发送给工作人员并从那里开始工作。

关于cordova - Phonegap 和 WebWorkers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28642547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com