Webワーカーでdefiant.jsを使用しようとしています.JSON.searchに加えて計算量が多いためです。 は、しかし、私は、私は反抗的なデモコードの一部を使用して簡単な例を作成しimportScripts(defiant.min.js)を使用しているWebワーカーでエラーが発生しました
Uncaught Error: Uncaught ReferenceError: Defiant is not defined
を得続けます。
これはdefiant.jsの問題であるかどうか、私は間違ってスクリプトをインポートするだけですか? これを行う方法についての別の解決方法がありますか?
dandavisによって提案されたコメントのようにimportScriptsの位置を()変更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);
EDIT でJS - しかし、同じ結果が
ウェブワーカーファイル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