首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络工作者内部的RequireJS - onmessage未被调用

网络工作者内部的RequireJS - onmessage未被调用
EN

Stack Overflow用户
提问于 2014-06-25 12:55:58
回答 1查看 2.3K关注 0票数 2

我在web工作者中使用RequireJS遇到了问题,特别是在处理onmessage处理程序时,worker.js的第一个版本中没有调用这个处理程序。

app.js

代码语言:javascript
复制
var w = new Worker('worker.js');
w.postMessage(someData);

w.onmessage = function(event) {
    console.log(event.data);
};

worker.js和RequireJS -不工作,但没有错误

代码语言:javascript
复制
importScripts('require.js');

require({ baseUrl: 'foo' },
    ['dependency1'],
    function(dependency1) {

        self.onmessage = function (event) { // never called
            // do something with event.data...
            self.postMessage(data);
        };

        self.postMessage('debug'); // this one works
    }
);

worker.js无RequireJS -工作

代码语言:javascript
复制
onmessage = function (event) {
    // do something with event.data...
    postMessage(data);
};
EN

回答 1

Stack Overflow用户

发布于 2014-08-23 01:58:39

这是网络工作者:

代码语言:javascript
复制
require({baseUrl: "../lib"},
["require","timer"], function(Timer) {
     self.onmessage = function(event) { console.log("Received"); }
     postMessage("In require");
});

下面是调用它的模块:

代码语言:javascript
复制
var worker = new Worker('src/workers/worker.js'); 
worker.postMessage("hello"); //This fails
worker.onmessage = function(event) {
console.log(event);
};

但是,从postMessage的按钮调用工作人员成功。我把received找回来了。

由于怀疑异步加载问题,我修改了代码。

代码语言:javascript
复制
var worker = new Worker('src/workers/timer_worker.js');
   console.log(worker);
   worker.onmessage = function(event) {
       console.log(event);
       switch(event.data.message) {
           case "loaded": 
                worker.postMessage("hello");
           break;
       };
   };

只需让工作人员在完成需求模型中的加载并触发后续代码时发送消息即可。

编辑-这是一个图表,以使它更清楚。onmessage调用是粉红色的:

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24409289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档