我想在web worker中使用defiant.js,因为除了JSON.search之外,我还在做繁重的计算。 不过,我不断收到一个使用importScripts的web worker错误(defiant.min.js)
Uncaught Error: Uncaught ReferenceError: Defiant is not defined
我创建使用挑衅的演示代码的一部分,一个简单的例子。
有谁知道这是一个defiant.js问题还是我只是导入脚本错了? 或者还有其他的解决方案可以做到这一点?
JS在main.html中
var obj = {
"car": [
{"id": 10, "color": "silver", "name": "Volvo"},
{"id": 11, "color": "red", "name": "Saab"},
{"id": 12, "color": "red", "name": "Peugeot"},
{"id": 13, "color": "yellow", "name": "Porsche"}
],
"bike": [
{"id": 20, "color": "black", "name": "Cannondale"},
{"id": 21, "color": "red", "name": "Shimano"}
]
}
var worker = new Worker('defiantWW.js');
worker.addEventListener('message', function(e) {
console.log(e.data);
}, false);
worker.postMessage(obj);
网络工作者文件
self.addEventListener('message', function(e) {
importScripts('defiant.min.js')
var obj=e.data;
var search = JSON.search(obj, '//car[color="yellow"]/name');
self.postMessage(search);
}, false);
编辑 改变importScripts的)位置(由dandavis的意见建议 - 但同样的结果
网worker file v2
importScripts('defiant.min.js')
self.addEventListener('message', function(e) {
var obj=e.data;
var search = JSON.search(obj, '//car[color="yellow"]/name');
self.postMessage(search);
}, false);
你应该上前线的负载,而不是在每封邮件进口,这可能搞砸 – dandavis
谢谢 - 改变了importScripts的位置()并编辑了问题,但结果保持不变。 – Kristian