Pot.js Workeroid Test (Web Worker Native + Emulator)
Pot.js Workeroid Test (Web Worker Native + Emulator)
by polygonplanet
HTML
<a href="http://polygonplanet.github.com/Pot.js/#reference.Pot.Workeroid.methods" target="_blank">Pot.Workeroid リファレンス</a>
<hr>
<div id="result"></div>
JavaScript
var url = 'http://api.polygonpla.net/js/pot/1.17/pot.min.js';
$.getScript(url).then(function() {
var Assert = {
count : 0,
section : null,
deferred : Pot.Deferred.succeed(),
beginSection : function(name) {
var that = this;
return this.deferred.then(function() {
that.deferred = new Pot.Deferred();
that.section = name;
});
},
endSection : function(name) {
this.deferred.begin();
},
log : function(value) {
$('#result').append(
$('<div/>').text(
Pot.sprintf('%02d: %s: %s',
++this.count,
this.section,
(Pot.isBoolean(value) ?
(value ? 'OK' : 'Error!') :
value
)
)
)
);
}
};
Pot.begin(function() {
return Assert.beginSection('BEGIN').then(function() {
Assert.log('BEGIN');
Assert.endSection('BEGIN');
});
}).then(function() {
return Assert.beginSection('test1').then(function() {
// -----------------------------------------
var worker = new Pot.Workeroid(function(data) {
//
// このスコープの中が 子 Worker スレッド
//
var add = 1;
postMessage(data + add);
});
// メッセージを受信した時
worker.onmessage = function(data, event) {
Assert.log(data == 2);
Assert.log(typeof event === 'object');
Assert.endSection('test1');
};
// エラー時の設定 (任意)
worker.onerror = function(err) {
Assert.log(err);
Assert.endSection('test1');
};
// 1 を 子 Worker に送信 => 2
worker.postMessage(1);
});
}).then(function() {
return Assert.beginSection('test2').then(function() {
// -----------------------------------------
var worker = new Pot.Workeroid(function(data) {
//
// このスコープの中が 子 Worker スレッド
//
var add = 1;
self.postMessage(data + add);
});
// メッセージを受信した時 (addEventListener でも設定可)
worker.addEventListener('message', function(data, event) {
Assert.log(data == 2);
Assert.log(typeof event === 'object');
...