ホームページ >ウェブフロントエンド >H5 チュートリアル >HTML5 Web Workers Web サイトは、multi-threading_html5 チュートリアル スキルを使用して実装することもできます

HTML5 Web Workers Web サイトは、multi-threading_html5 チュートリアル スキルを使用して実装することもできます

WBOY
WBOYオリジナル
2016-05-16 15:49:311693ブラウズ

Web ワーカーは HTML5 の新機能で、Web アプリケーションでバックグラウンド処理を実装するために使用されるテクノロジーです

HTML4 では、js で作成されたプログラムはすべてシングルスレッドです。時間がかかると、Web インターフェイスが長時間応答しなくなり、最悪の場合、スクリプト プロンプト ボックスが表示されます。

スクリプトの実行に時間がかかりすぎるというメッセージが表示されます。続行しますか? 。 。 。ここから、この記事の主人公である Web Workers API

に行き着きます。

この API を使用すると、バックグラウンドで実行されるスレッドを簡単に作成できます。



コードをコピーコードは次のとおりです:
var worker = new Worker('*.js');
注: バックグラウンド スレッドはページまたはウィンドウ オブジェクトにアクセスできません
メッセージで送信したり、メッセージを受信したり、バックグラウンド スレッドでデータを渡したりすることができます:
worker.onmessage = function (e) {};
worker.postMessage = function (e) {};

教えてください そして:


コードをコピーしますコードは次のとおりです:



< ;/title><br /> <script type ="text/javascript"><br /> function Calculate() {<br /> var num = 10000000000;<br /> var r = 0;<br /> for (var i = 1; i <br /> ) { <br /> r = i;<br /> }<br /> 計算();<br /> </script> 🎜> </head><br> <body><br> </body><br> </html><br><br><br><br> </div> <br> <br>それで、私の美しいフレームが完成しました。 。 。ただし、Web Worker を使用すると、次のことはできません: <img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415483316.jpg"><p><br><br></p> <div class="msgheader">コードをコピーします<div class="right"><span style="CURSOR: pointer" onclick="copycode(getid('phpcode69'));"><u>コードは次のとおりです:</u></span></div><!DOCTYPE html></div> <html xmlns="http://www.w3.org/1999/xhtml"><div class="msgborder" id="phpcode69"> <head><br> <title></ title><br> <script type="text/javascript"><br> var worker = new Worker('c.js');<br> worker.onmessage = function (e) {<br>alert( 'および: ' e.data);<br> };<br> function Calculate() {<br> var num = 1000000;<br> worker.postMessage(num);<br> }<br> Calculate() ;<br> </script><br> </head><br> <body><br> </body><br> </html><br><br><br><br> </div> <br><br><div class="msgheader">コードをコピーします<div class="right"><span style="CURSOR: pointer" onclick="copycode(getid('phpcode70'));"><u>コードは次のとおりです。</u></span></div>onmessage = function (e) {</div> var num = e.data ;<div class="msgborder" id="phpcode70"> var r = 0;<br> for (var i = 1; i r = i;<br> }<br> postMessage(r );<br>} <br><br><br> <br> </div> <p>時々疑問に思うことがありますが、何もすることがないのに、なぜこのような大きな数字を計算するのでしょうか? 。 。 。 。もちろん、それは退屈なギミックですが、それを必要とするシナリオがあると思いました。 <img alt="" src="http://files.jb51.net/file_images/article/201304/2013042415483317.jpg"> </p>以前ファイルAPIを学習していたときに、ファイルが大きすぎると非常に遅くなるという操作がありましたが、これは応用できるのでしょうか? 2回目の学習時に試してみる必要があります。 <p> </p> <p>スレッドとのデータのやり取り </p> <p> <strong>ここで関数を完成させ、フォアグラウンドで配列をランダムに生成し、それが 3 つに分割できることをバックグラウンドで計算し、印刷のためにフォアグラウンドに戻ります: </strong></p> <p><br> <br></p> <div class="msgheader">コードをコピーします<div class="right"><span style="CURSOR: pointer" onclick="copycode(getid('phpcode71'));"><u>コードは次のとおりです:</u><div class="msgborder" id="phpcode71"> <br>主程序 <br> <!DOCTYPE html><br> <html xmlns="http://www.w3.org/1999/xhtml"><br> <head><br> <title>

< script src="../jquery-1.7.1.js" type="text/javascript">









复制代码
代码如下:

生成数组的程序
onmessage = function (e) {
var arr = [];
for (var i = 0; i arr.push(parseInt(Math.random() * 100));
}

var worker = new Worker( 't2.js');
worker.postMessage(JSON.stringify(arr));
worker.onmessage = function (e) {
//掴挑戦选结果発行回前台
postMessage( e.data);
};
}


复制代
代以下のように:

判断数グループすべてのデータが 3 整除される
onmessage = function (e) {
var arr = JSON.parse(e.data);
var str = '';
for (var i = 0, len = arr.length; i if (parseInt(arr[i]) % 3 == 0) {
if (str != '') str = ';';
str = arr[i];
}
}
postMessage(str);
close();

};

程序逻辑説明:

这里用了个線程嵌套

最初に実行する前台程序、ここでは 100 個の数グループを初期化するために使用される子回線プログラム「t1」を初期化しました

その後、子回線程t1また初期化完了子回線程t2(遍歴数組、3整除できる数字、構成文字列に使用)、t1将数組データ転送给t2

t2 t1 データを受信し、計算後、字符串转给t1、t1转给前台、前台実行自己の逻辑

流程结束



简单来说,我此这就是子線程,而後送出データ给子線ポストメッセージ,其後等待結果皆可。

ここで、上流の通信 API Web ソケットを組み合わせて 2 つを組み合わせて 1 つのネットワーク プロトコルを構成したり、ローカルに保存したり、ローカルにデータを保存したりすることもできます。

この子はおそらく不屈の西人です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:HTML5 Canvas ベース: 文字列、パス、背景、pictures_html5 チュートリアル スキルの詳細な説明次の記事:HTML5 Canvas ベース: 文字列、パス、背景、pictures_html5 チュートリアル スキルの詳細な説明

関連記事

続きを見る