我目前正在编写一个显示我们大学自助餐厅菜单计划的应用程序。 为了使其独立于平台,我使用 Phonegap; XML 解析是在 JQuery 的帮助下完成的,布局是用 JQuery Mobile 生成的。
在我的 motorola defy 上解析菜单的 XML 文件大约需要 1-2 秒。例如,如果您通过单击单选按钮将位置更改为另一个自助餐厅,GUI 将在这一秒内卡住。我在 JavaScript 中发现了工作线程的概念,并决定将 XML 数据的解析委托(delegate)给工作线程。不幸的是,我不得不发现 JQuery 在工作线程中不起作用:-( 然后我发现插件 JQuery.hive 似乎解决了我的问题。我现在在配置单元环境中创建线程,发送消息,在内部处理它工作线程并收到答案。 不幸的是,这仅适用于 Firefox,不适用于我的 Android/Phonegap 应用程序。
这是我生成 Worker 的地方:
$(function() {
$("#mydiv").append("Start |");
$.Hive.create({
worker : 'Worker_Parser.js',
receive : function(data) {
$("#mydiv").append('RECEIVED MESSAGE: ' + data.message + ' | ');
}
});
$("#mydiv").append("Worker generated | ");
});
$.Hive.get(0).send("test");
$("#mydiv").append("End ");
这是工作线程:
importScripts('jquery.hive.pollen.js');
$(function (data) {
$.send("test");
});
Firefox 显示
Start | Worker generated | End | RECEIVED MESSAGE: test |
Android Broswer 在尝试启动线程时取消脚本并仅显示:
Start |
JQuery.hive 是否应该在 Android 下运行? 有没有更好的方法来解决我在不卡住 GUI 的情况下解析 XML 的问题?
提前致谢
汤姆
最佳答案
Looking here ,您会看到当前的 Android 浏览器和 iOS 都不支持 Web Worker。
您能否在 XML 文件中进一步分解数据,并根据用户交互以较小的 block 发送它,而不是一次发送整个菜单?也许只将菜单请求缩小到当天并触发其他日子的 AJAX 请求?
关于javascript - Android 上的 JQuery.Hive(工作线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433527/