2017-01-31 18 views
1
var worker = new Worker('./src/parser.js'); 

    worker.onmessage = function(e) { 
    console.log(e); 
    console.log(e.data.getCollection()); // .. is not a function 
    }; 

労働者:戻りオブジェクト

onmessage = function(e) { 
    var myModel = new Model(); 
    myModel.readFile(e.data.files[0], function (data) { 
    console.log(myModel.getCollection()); // Returns array 
    postMessage(myModel); 
    }); 
}; 

instansiatedオブジェクトが返されますが、コンストラクタで値のみです。プロトタイプ関数ではありません。

なぜですか? Webworkerからインスタンス化されたオブジェクトを返すことは可能でしょうか?

答えて

1

私は、Webワーカーに渡されたすべてのデータがシリアル化されていると推測します(JSON parse/stringify)。オブジェクトの関数定義は、シリアル化中に消去されます。

モデルを返す代わりに、クエリされた配列を返すことができますか?

https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

+0

いいえ、それは私がparsningていると私は相続(..のインスタンス)を確認できるようにする必要がある巨大なクラス・スキーマです。 – Per

+0

私はあなたが望むものをあなたができるとは思えません。代わりに、メッセージに応答して行う必要のあるすべてのクエリ/計算を行う方法でWebワーカーインタラクションを設計し、それに応答してメッセージだけをデータに渡す必要があります。ワーカーがメッセージを受け取ることができる本質的に別のサーバーであると考えると便利です。サーバーと通信するためのWeb要求として実際には「機能」を送信することはできませんが、どちらにもする必要はありません。 – Jon

+0

ええ、別の方法を考える必要があります。どうも。 – Per

関連する問題