JavaScriptのWeb Worket
3579 ワード
紹介する
Web Workカーは、Webコンテンツのバックグラウンドスレッド内でスクリプトを実行するための簡単な方法を提供する.スレッドはユーザインタフェースと干渉することなくタスクを実行することができる.また、彼らはXMLHttpRequestを使ってI/Oを実行することができます.作成すると、ワーカーは、そのコードによって指定されたイベントハンドラにメッセージを送ることができます.
Web Workerの使い方のポイントソース制限:Workカースレッドに割り当てられたスクリプトファイルは、メインスレッドのスクリプトファイルと同じソースでなければなりません. DOM制限:Workカースレッドがあるグローバルオブジェクトは、メインスレッドとは違って、ホームスレッドがあるウェブページのDOMオブジェクトを読めないし、document、window、parentなどのオブジェクトも使えない.しかし、Workカースレッドはnavigatorオブジェクトとlocationオブジェクトがあります. 通信連絡:Workerスレッドとメインスレッドは同じコンテキストではなく、直接通信できないので、メッセージを通じて完了しなければなりません. スクリプト制限:Workerスレッドはalert()方法とconfirm()方法を実行できませんが、XMLHttpRequestオブジェクトを使用してAJAX要求を送信することができます. ファイル制限:Workerスレッドはローカルファイルを読めません.すなわち、マシンのファイルシステムを開けません.ロードされたスクリプトは、ネットワークから必要です.後は私達が処理することができます. http-serverをインストールします
Workカースレッドはローカルファイルを読めません.つまり、本マシンのファイルシステムを開けません.ロードされたスクリプトは、ネットワークから必要です.だから私たちはプロジェクトを始めるべきです.
私達は新しいフォルダを作って、名前は
ウォーカーを終了する event.filename:エラーが発生したWorkerスクリプトの名前. event.message:エラーの情報. event.lineano:エラーが発生した行番号. 外部スクリプトを読み込み
mail.js
https://caniuse.com/#feat=webworkersの互換性はまだ楽観的ではないですが、移動先での互換性はいいです.
参照
Web Workersを使う Web Workカーの使用教程
Github
wclimb
Web Workカーは、Webコンテンツのバックグラウンドスレッド内でスクリプトを実行するための簡単な方法を提供する.スレッドはユーザインタフェースと干渉することなくタスクを実行することができる.また、彼らはXMLHttpRequestを使ってI/Oを実行することができます.作成すると、ワーカーは、そのコードによって指定されたイベントハンドラにメッセージを送ることができます.
Web Workerの使い方のポイント
Workカースレッドはローカルファイルを読めません.つまり、本マシンのファイルシステムを開けません.ロードされたスクリプトは、ネットワークから必要です.だから私たちはプロジェクトを始めるべきです.
http-server
を使用して、最も簡単にインストールできます.> cnpm i -g http-server
使用:> http-server
基本的な使い方私達は新しいフォルダを作って、名前は
worker
です.中に新しい三つのファイルはそれぞれです.index.html
main.js
worker.js
worker
スレッドを新規作成するのは簡単です.var worker = new Worker('worker.js')
main.js
:var worker = new Worker('./worker.js')
console.log('worker running')
worker.addEventListener('message',e => {
console.log('main: ', e.data);
})
// :
// worker.onmessage = (e)=>{
// console.log('main: ', e.data);
// }
worker.postMessage('hello worker,I am from main.js')
worker.js
:console.log('worker task running')
onmessage = (e)=>{
console.log('worker task receive', e.data);
//
postMessage('Hello, I am from Worker.js');
}
ワーカーフォルダの下で、コマンドラインにhttp-serverを入力して、プロジェクトをスタートして、ブラウザで開けて、コンソールを見ます.worker running
worker task running
worker task receive hello worker,I am from main.js
main: Hello, I am from Worker.js
上記からは、worker
がonmessage
を介してデータを傍受し、postMessgae
を介してデータを送信することが見られます.ウォーカーを終了する
worker.terminate();
処理を誤るworker.addEventListener('error', (e) => {
console.log('main error', 'filename:' + e.filename + 'message:' + e.message + 'lineno:' + e.lineno;
});
mail.js
var worker = new Worker('./worker1.js');
ウォーカー1.jsconsole.log("I'm worker1")
importScripts('worker2.js', 'worker3.js');
//
// importScripts('worker2.js');
// importScripts('worker3.js');
ウォーカー2.jsconsole.log("I'm worker2")
ウォーカー3.jsconsole.log("I'm worker3")
互換性https://caniuse.com/#feat=webworkersの互換性はまだ楽観的ではないですが、移動先での互換性はいいです.
参照
Web Workersを使う Web Workカーの使用教程
Github
wclimb