【发布时间】:2011-11-22 07:50:46
【问题描述】:
所以我正在创建一个网络工作者:
var arrayit = function(obj) {
return Array.prototype.slice.call(obj);
};
work = arrayit(images);
console.log(work);
//work = images.push.apply( images, array );
// Method : "load+scroll"
var worker = new Worker('jail_worker.js');
worker.postMessage(work)
worker.onmessage = function(event) {
console.log("Worker said:" + event.data);
};
图片是这样的:
$.jail.initialStack = this;
// Store the selector into 'triggerEl' data for the images selected
this.data('triggerEl', (options.selector) ? $(options.selector) : $window);
var images = this;
我认为我的问题与此有关:
http://dev.w3.org/html5/spec/Overview.html#safe-passing-of-structured-data
我该如何解决这个问题?如您所见,我尝试将宿主对象切片成一个真正的数组,但没有奏效。
这是我正在破解的文件的链接:
https://github.com/jtmkrueger/JAIL
更新--------------------------------- ----
根据@davin 接受的答案,这是我必须做的:
var arrayit = function(obj) {
return Array.prototype.slice.call(obj);
};
imgArray = arrayit(images);
work = _.map(images, function(i){ return i.attributes[0].ownerElement.outerHTML; });
var worker = new Worker('jail_worker.js');
worker.postMessage(work)
worker.onmessage = function(event) {
console.log("Worker said:" + event.data);
};
注意:我使用 underscore.js 来确保兼容性。
【问题讨论】:
-
顺便说一句,您是否考虑过这种异步/并行图像/内容分发方法的替代方案? CDN、子域拆分、RequireJS 插件等?
-
是的,其中一些事情已经发生了。
-
请注意,过度并行化通常更多的是对性能的拖累而不是增强,所以如果你已经在实现一些东西并且它们还不够好,也许你应该看看它们的工作情况如何...
-
这是我唯一可以控制的方面,所以我正在努力做到最好。
-
太糟糕了。你在说什么宿主对象?你到底想向WW传递什么?如果您希望传递由于 WW API 未实现共享内存而无法工作的 jquery 对象,并且尝试复制 Object 会导致传递一个空对象(如您的链接所述)。您需要序列化您不想发送的任何数据。
标签: javascript jquery html dom web-worker