workerpool 的方法很少.
看Google demo 使用很简单.
可是不想使用 int createWorkerFromUrl(scriptUrl) 总觉得为了一个线程 在开一个js有点不习惯.
int createWorker(scriptText) 使用该方法.
可是和mootools 结合时,很无奈.不能使用mootools 的function方法.
目前是这样使用的.
var notepadSaveWorkerId;// notepad save wokerpool 子线程id
var notepadMainWorkerpool=new GtimerWorkerpool; 用mootools 封装了google workpool 和timer的一个类
function notepadSaveWorkerFunc(a, b, message) {
str="id="+message.body[0]+" title="+message.body[1]+" type="+message.body[2]+" content="+message.body[3];
google.gears.workerPool.sendMessage([{ret:"true",val:str}], message.sender);
} //工作的子线程
notepadMainWorkerpool.workerPool.onmessage = function(a, b, message) {
if (message.sender == notepadSaveWorkerId) {
alert('Received message from worker ' + message.sender + ': /n ret=' + message.body[0].ret+'/n value='+message.body[0].val);
//alert("workpool work save notepad ok");
}
}; //主线程消息体
notepadSaveWorkerId= notepadMainWorkerpool.workerPool.createWorker(String(notepadSaveWorkerFunc) +"google.gears.workerPool.onmessage = notepadSaveWorkerFunc;");
//创建子线程
notepadMainWorkerpool.workerPool.sendMessage([1,2,3,4], notepadSaveWorkerId);
//主线程触发子线程
notepadMainWorkerpool class
var GtimerWorkerpool = new Class({
Implements: Log,
timer:null,
workerPool:null,
initialize: function(){
this.timer = google.gears.factory.create('beta.timer');
this.workerPool = google.gears.factory.create('beta.workerpool');
}
});
再给出一个简单例子.备忘用.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>COLABOX DEMO</title>
<script type="text/javascript" src="gears_init.js"></script>
</head>
<script>
var wp = google.gears.factory.create('beta.workerpool', '1.0');
childCode = String(evalHandler) +
'google.gears.workerPool.onmessage = evalHandler;';
alert(childCode);
wp.onmessage = parentHandler;
var childId = wp.createWorker(childCode);
wp.sendMessage('2+2', childId);
function parentHandler(msg, sender) {
var r = document.getElementById('result');
r.innerHTML = msg;
}
function evalHandler( msg, sender ) {
var result = eval(msg);
google.gears.workerPool.sendMessage(String(result), sender);
}
</script>
<body>
<div id="result">hello</div>
</body>