第一次尝试使用Web worker API,似乎无法获得后台工作者的响应。
标记:
<script src="~/Scripts/script.js"></script>
<button onclick="TriggerWorker()">Trigger Worker</button>
script.js文件的内容:
function TriggerWorker() {
var myWorker = new Worker('worker.js');
myWorker.onmessage = function (e) {
console.log(e.data);
}
console.log(myWorker);
myWorker.postMessage("Text sent to worker");
}
worker.js文件的内容:
onmessage = function (e) {
postMessage('OK');
}
我可以让myWorker对象写入控制台,但响应&#34; OK&#34;永远不会让它回到控制台。检查myWorker对象时,我可以看到onmessage属性设置为&#34;权限被拒绝&#34;。
答案 0 :(得分:0)
包含worker onmessage声明的文件的路径是相对于html文件的 - 而不是调用脚本文件。
我通过进行以下编辑来实现它:
var myWorker = new Worker('../Scripts/worker.js');
答案 1 :(得分:0)
onmessage事件与当前窗口有关。所以在script.js中它应该是
self.onmessage = function(e)
而不是
myWorker.onmessage = function (e)
postMessage方法属于目标窗口。所以在worker.js中它应该是
onmessage = function(e){ e.source.postMessage( 'OK'); }
而不是
onmessage = function (e) {
postMessage('OK'); }