html 引入 ajax,HTML Web Worker和Jquery Ajax调用

HTML Web Worker和Jquery Ajax调用

我想知道是否可以在web worker文件中使用jQuery。 谷歌浏览器给我这个错误:“未捕获ReferenceError:$未定义”。

这里是代码:父文件:

var loader = new Worker(BASE_URL + "js/rss_loader_worker.js"); // Ask the worker to start loading the RSS from the server loader.postMessage("loadRss"); // When receive the response from the server loader.onmessage = function (event) { console.log(event.data); }

工作文件:

onmessage = function (event) { if (event.data === "loadRss") { loadRss(); } } /** * This function handles the AJAX request to the server side * then pass the content to the view page * @param none * @return html text */ loadRss = function () { $.ajax({ data: {city: CITY_LOCATION}, url: BASE_URL + "/getfeeds", onsucess: function (data) { } }); }

请帮忙,谢谢:)

不,你不能 。 无法访问非线程安全的组件或DOM,您必须通过序列化对象将特定数据传入和传出线程。 所以你必须非常努力地在你的代码中引起问题。 jQuery是一个JavaScript DOM库 。

但是,您可以在您的工作人员中使用本机XMLHttpRequest 。

而且,导入外部脚本不会通过带有script标记的页面:在工作程序文件中使用importScripts() 。

这是我发现的:

您可以使用importScripts()函数将外部脚本文件或库加载到工作程序中。

importScripts('script1.js'); importScripts('script2.js');

要么

importScripts('script1.js', 'script2.js');

虽然,你不能加载jQuery,因为jQuery需要DOM访问,哪些web worker不具备。

由于Web工作人员处于外部文件中,因此他们无法访问以下JavaScript对象:

窗口对象

文档对象

父对象

所以你不能使用$内部的工人文件。 更好的是你可以使用传统的AJAX这样的东西

if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

Node.JS中的执行环境也缺less原生的DOM实现。 我认为Node.JS和HTML5 Web Workers共享某些限制是公平的。

为了在Node.JS中使用jQuery,有许多方法可以模拟DOM实现。 如果你仍然想在Web Workers中使用jQuery,我想你应该searchNode.JS解决scheme,看看它们是否适用。

jQuery主要用于处理DOM和使用网页。 所以对于不能访问DOM的Web Workers来说,它是不太适合的。

您可能需要使用实用程序库而不是DOM库(例如underscore.js) ,或者也许有人应该制作一个jQuery Worker库,这是一个精简版的jQu​​ery,没有所有的DOM操作function,只是保持实用function。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值