@ HTML

Web Workers:ウェブワーカー

Web Workers (ウェブ ワーカー)は JavaScript をバックグラウンドで動作させる仕組みのことです。
JavaScript で、時間のかかる処理を行うと、アプリケーションの UI(ユーザインターフェース)がとまってしまい、ユーザが待たされてしまうことがあります。そこで必要とされるのが、UI とは関係のない処理をバックグラウンドで行う仕組みです。

専用ワーカーの利用

専用ワーカーを利用するには、ワーカーへのクライアントとなる Worker オブジェクトを作ります。その都度新しい専用ワーカーが生成され、引数で指定されたファイルの実行をバックグラウンドで開始します。

専用ワーカーで実行されるコードの環境では、postMessage(メッセージ)メソッドと onmessage イベントハンドラが定義されており、これを使用してワーカーの生成元とデータのやりとりを行います。

web_workers.html

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="utf-8">
<title>sample</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/sanitize.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<script>
// ワーカーのインスタンスを生成
var worker = new Worker("hello.js");

// ワーカーからのメッセージを受け取ったときの処理
worker.onmessage = function(event) {
  alert(event.data);
}

function hello() {
  var name = document.getElementById("name").value;
  // ワーカーに対してメッセージを送信する
  worker.postMessage(name);
}
</script>
</head>

<body>
<div class="container" style="margin-top: 50px">
  <h1>Web Workers</h1>
  <div class="form-inline">
    <div class="form-group">
      <input id="name" placeholder="お名前" class="form-control">
    </div>
    <button onclick="hello()" class="btn btn-primary">送信</button>
  </div>
</div>
</body>

</html>

hello.js

// メッセージを受信
onmessage = function(event) {
  // 呼び出し元に結果を送信
  postMessage("こんにちは、" + event.data + "さん");
};

demo