Web Worker 工作但在控制台中生成错误
Web Worker Works but generate error in console
我创建了一个可以正常工作的 Web Worker,但是当我打开 chrome 控制台时,我看到以下错误:
未捕获的类型错误:无法在 'Window' 上执行 'postMessage':需要 2 个参数,但只有 1 个存在。
这是实现工人的file.js。
'use strict';
function GetSummaryAsync() {
//$.getJSON("/api/Summary/GetSummaryAsync", function (response) {
// postMessage(response);
//});
postMessage('pippo');
}
GetSummaryAsync();
setInterval(GetSummaryAsync, 15000);
有人可以帮我解决这个错误吗?
看起来您是从 window 对象而不是 worker 调用方法(window postMessage 需要更多参数)。你是不是用浏览器打开的,而不是用 worker API?
这是一个webworker将两个数字相加的例子,用类似的方法试试
worker.html
<html>
<script>
if (window.Worker){
var myWorker = new Worker("worker.js"); // create a worker object
var message = {addData: {num1: 1, num2 :5}};
myWorker.postMessage(message) // send message to worker
myWorker.onmessage = function(e){
alert (e.data.result);
} // get the response from the worker
}
else {
alert("your browser do not support");
}
</script>
worker.js
this.onmessage = function(e) {
this.postMessage({result: e.data.addData.num1 + e.data.addData.num1 })
// add two number and send to html file
}
我创建了一个可以正常工作的 Web Worker,但是当我打开 chrome 控制台时,我看到以下错误: 未捕获的类型错误:无法在 'Window' 上执行 'postMessage':需要 2 个参数,但只有 1 个存在。
这是实现工人的file.js。
'use strict';
function GetSummaryAsync() {
//$.getJSON("/api/Summary/GetSummaryAsync", function (response) {
// postMessage(response);
//});
postMessage('pippo');
}
GetSummaryAsync();
setInterval(GetSummaryAsync, 15000);
有人可以帮我解决这个错误吗?
看起来您是从 window 对象而不是 worker 调用方法(window postMessage 需要更多参数)。你是不是用浏览器打开的,而不是用 worker API?
这是一个webworker将两个数字相加的例子,用类似的方法试试
worker.html
<html>
<script>
if (window.Worker){
var myWorker = new Worker("worker.js"); // create a worker object
var message = {addData: {num1: 1, num2 :5}};
myWorker.postMessage(message) // send message to worker
myWorker.onmessage = function(e){
alert (e.data.result);
} // get the response from the worker
}
else {
alert("your browser do not support");
}
</script>
worker.js
this.onmessage = function(e) {
this.postMessage({result: e.data.addData.num1 + e.data.addData.num1 })
// add two number and send to html file
}