8
worker.postMessage(data1);
worker.postMessage(data2);
而且webwoker里面,假设有要处理的问题数量会完成data1
worker.postMessage(data1);
worker.postMessage(data2);
而且webwoker里面,假设有要处理的问题数量会完成data1
单个工人执行其任务队列,在时间即一个任务之前worker.postMessage(data2)
块。试试下面的例子:
<!DOCTYPE html>
<script>
var worker = new Worker('worker.js');
worker.postMessage({ task: 1, iterations: 100 }); // very slow task
worker.postMessage({ task: 2, iterations: 1 }); // very quick task
worker.onmessage = function(event) {
console.log(event.data);
};
</script>
worker.js:
self.onmessage = function(event) {
for (var i = 0; i < event.data.iterations * 1000 * 1000 * 10; i++) {};
self.postMessage("Finished task " + event.data.task);
}
输出继电器:
的任务,为了完成始终,即先缓慢的,那么一个快。 (如果任务并行执行,第二个任务将首先完成,并有明显的余量。)
(只是要明确:调用postMessage始终在其执行上下文中(作为任何函数调用),但实际上会立即返回“立即“),因为发布消息本身的操作非常快,这可能不是你要求的。)
注意:如果您尝试从本地磁盘加载worker.js,则在Chrome浏览器中运行Safari &,Chrome会抛出安全异常。
你的工作人员执行什么任务?计算?阿贾克斯? – 2012-03-08 16:23:07