Google Chrome和IE冻结(锁定主线程)在大Javascript文件渲染中的应用

Google Chrome和IE冻结(锁定主线程)在大Javascript文件渲染中的应用,javascript,google-chrome,internet-explorer,firefox,web-worker,Javascript,Google Chrome,Internet Explorer,Firefox,Web Worker,我在工作人员中有一个JSONp。我的JSONp内容足够大(大约3MB)。 为了不阻塞UI,我尝试将数据加载到Worker中,在那里进行处理(缩小或其他操作),然后返回主UI线程一个轻量级版本以进行进一步的工作 但是Chrome和IE在他们刚刚下载完JSONp之后冻结大约2-3秒(在我的例子中)。(甚至认为这是在单独的线程中完成的 即使我使用importScripts(下面的代码)将JSONp加载到Worker中,即使我对接收到的数据不做任何处理,它也会冻结 它只是在页面界面上停留几秒钟 Fir

我在工作人员中有一个JSONp。我的JSONp内容足够大(大约3MB)。 为了不阻塞UI,我尝试将数据加载到Worker中,在那里进行处理(缩小或其他操作),然后返回主UI线程一个轻量级版本以进行进一步的工作

但是ChromeIE在他们刚刚下载完JSONp之后冻结大约2-3秒(在我的例子中)。(甚至认为这是在单独的线程中完成的

即使我使用importScripts(下面的代码)将JSONp加载到Worker中,即使我对接收到的数据不做任何处理,它也会冻结

它只是在页面界面上停留几秒钟

Firefox在这方面做得很好。 那么,我有没有做错什么,有什么办法可以解决这个问题

该代码是按“标准”编写的: 主要内容:

工人:

var myCallback = function (data) {
    // the JSONP callback
    // the freezing takes place even if I comment the next line (do nothing)
    self.postMessage(JSON.stringify(data));
};

self.addEventListener('message', function (e) {
    var url = e.data.url;
    importScripts(url);
}, false);

谢谢

可能有一些与你的问题相关的见解谢谢你的链接,但这不是我真正要说的。该链接讨论了在主UI繁忙时锁定的web工作程序(无法启动远程请求)。但在我的例子中,反之亦然:importScripts完成远程脚本下载后,主线程被阻塞。
var myCallback = function (data) {
    // the JSONP callback
    // the freezing takes place even if I comment the next line (do nothing)
    self.postMessage(JSON.stringify(data));
};

self.addEventListener('message', function (e) {
    var url = e.data.url;
    importScripts(url);
}, false);