Pot.js Workeroid.terminate() Test (Web Workers)
Pot.js Workeroid.terminate() Test (Web Workers)
by polygonplanet
HTML
<a href="http://polygonplanet.github.com/Pot.js/#reference.Pot.Workeroid.methods" target="_blank" title="Pot.js + PotLite.js - Document and Reference - JavaScript Async + String Utility Library">Pot.Workeroid Reference</a>
<hr>
<button id="execute" type="button">execute</button>
<button id="stop" type="button">stop</button>
<div id="result"></div>
CSS
button {
margin-left: 1em;
}
#result {
margin: 1em;
}
JavaScript
var url = 'http://api.polygonpla.net/js/pot/1.17/pot.min.js';
$.getScript(url).then(function() {
var worker;
function doit() {
worker = new Pot.Workeroid(function(data) {
//
// このスコープの中が 子 Worker スレッド
//
var n = 1;
Pot.Deferred.forEver.slow(function() {
n += 1;
for (var i = 2; i <= Math.sqrt(n); i += 1) {
if (n % i == 0) {
return;
}
}
// 素数をポスト
postMessage(n);
});
});
// メッセージを受信した時
worker.onmessage = function(data, event) {
$('#result').text(data);
};
// Worker を開始
worker.postMessage();
}
$('#execute').click(function() {
$(this).attr({disabled : true});
doit();
});
$('#stop').click(function() {
worker.terminate();
});
});