シンプルな専用 Web ワーカーを作成して、何かを継続的に処理し、クライアントが要求したときにのみその状態を送信することは可能ですか?
これまでに行ったこと、クライアントファイル:
<script>
// spawn a worker
var worker = new Worker('basic-worker.js');
// decide what to do when the worker sends us a message
worker.onmessage = function(e){
document.getElementById('result').textContent = e.data;
};
</script>
<html>
<head></head>
<body>
<p>The Highest prime number discovered so far : <outpout id="result"></output></p>
</body>
</html>
ワーカー ファイル:
var n = 0;
search: while (true) {
n += 1;
for (var i = 2; i <= Math.sqrt(n); i += 1)
if (n % i == 0)
continue search;
// found a prime !
postMessage(n);
}
ご覧のとおり、ワーカーは見つけた素数を継続的に送信します。たとえば、クライアントのボタンをクリックしたときに、素数の計算を開始して、見つけた最新の素数を送信するようにワーカーに依頼できるようにしたいと考えています。それは次のようになります(私が望むものの一般的な考えを与えるために、それが機能しないことはわかっています):
ワーカーファイル:
var n = 0;
var lPrime = 0;
// post last prime number when receiving a message
onmessage = function(e) {
postMessage(lPrime);
}
// continously search for prime numbers
search: while (true) {
n += 1;
for (var i = 2; i <= Math.sqrt(n); i += 1)
if (n % i == 0)
continue search;
// found a prime !
//postMessage(n);
lPrime = n;
}
クライアントファイル:
<script>
// spawn a worker
var worker = new Worker('basic-worker.js');
// what to do when the worker sends us a message
worker.onmessage = function(e){
document.getElementById('result').textContent = e.data;
};
// post to the worker so the worker sends us the latest prime found
function askPrime(){
worker.postMessage();
};
</script>
<html>
<head></head>
<body>
<p>The Highest prime number discovered so far : <outpout id="result"></output></p>
<input type="button" onclick="askPrime();">
</body>
</html>