2

我试图从 jQuery 中剥离除 ajax 功能之外的所有内容。抱歉这个愚蠢的问题,但请听我说:

  • 我正在使用网络工作者进行 ajax 调用,所以我不能在其中包含 core.js 的东西。
  • 我正在使用的另一个库调用 jQuery,但我无法让它与 jQuery.Hive.Pollen 库一起使用。经过数小时的故障排除后,这个 ChemDoodle Web 组件库似乎只适用于 jQuery,我没有足够的经验知道原因。
  • 使用 makefile 构建 jQuery 似乎很容易,但我不确定要包含什么。在 makefile 中,我取出了除了 ajax 相关的东西之外的所有东西:

.

BASE_FILES = ${SRC_DIR}/ajax.js\
    ${SRC_DIR}/ajax/jsonp.js\
    ${SRC_DIR}/ajax/script.js\
    ${SRC_DIR}/ajax/xhr.js\

但是,进一步检查 /ajax 源文件会显示调用“文档”的方法。所以这意味着无论我剥离多少个模块,这根本不起作用?

更新:关于 jQuery 的错误问题 #9889 似乎表明核心永远不会提供 Web 工作者可用的 ajax 函数,至少不会很快。

对我正在尝试做的事情以及为什么我需要使用网络工作者的一些描述,供任何感兴趣的人参考。我正在放置一个分布式计算应用程序,该应用程序从化合物数据库中进行一些分子模拟/筛选。普通的 javascript 不起作用,因为它会减慢页面速度,我希望应用程序在浏览器中连续运行,一个接一个地计算一个分子。这是我想要的网络工作者的伪代码大纲

while (true){main();}

main(){
 get job from server via ajax
 process data//must use web worker
send results to server via ajax
}

是的,我可以实现我的程序来反序列化从主页传递的数据字符串并让页面获取 ajax 数据,就像这样

//page-side javascript
var slave = new Worker()
slave.onMessage(event){
if status = "ready" {
check if data is available- if so, send it to server via ajax
fetch job data from server via ajax
slave.postMessage(job data)
}
}

//worker (slave)
self.onmessage(data) {
//process results
//send back to page
}

我想这可能可行,但它有点俗气,可能比让工人做所有事情要慢。根据 Rick Waldron 的说法,“如果您有一个正在轮询的系统,例如打开一个工作人员,永远在循环中发出 xhr 请求,在每次响应时, postMessage() 将结果返回给客户端,那么您就可以受益”

我想我会永远循环发出 xhr 请求,所以这个应用程序会很有用。

我确实找到了 jQuery.Hive.pollen.js,但它不能与我的其他库一起使用,这使得我需要进行 ajax 调用。虽然这是一个单独的问题(实际上是我的主要问题),所以如果有人对此感兴趣,请点击该帖子的链接:

4

1 回答 1

0

啊,我还没有弄清楚 jQuery 的问题,但我现在知道如何让 pollen.js 更像 jQuery。

删除(或注释掉)花粉中的两个请求头:

_xhr.setRequestHeader("X-Requested-With", "Worker-XMLHttpRequest");
_xhr.setRequestHeader("X-Worker-Hive", "Pollen-JS" );

与 jQuery 不同的是,pollen.js 的 ajax 函数返回一个 JSON 对象,其中包含服务器返回的 JSON 数据以及一个字符串化的表单。

data = {"json":{jsonobjecthere},"text":"stringifiedversionofthedata"}

如果做了这两个修改,那么我相信 pollen 和 jQuery 的 ajax 差不多

于 2011-09-08T02:01:39.730 回答