GetJson与WebWorker

时间:2014-07-06 17:54:54

标签: javascript

如何使我的脚本与WebWorker一起使用

$.getJSON(url, function(data) {  
                    var x="";  
                        for (i=0;i<data.sturi.length;i++)
                        {
                         $("#stdjgls ul").append("<li itemid="+i+"><a href=#vl>"+data.sturi[i]+"</a></li>");
                         stdge[i]=data.sturi[i];

                        }

1 个答案:

答案 0 :(得分:0)

您需要事先创建WebWorker实例。另外,为了以防万一,声明stgde。

var worker = new Worker('/js/mywebworker.js');
var stgde=[];

然后声明Webworker消息的监听器以执行某些操作。

worker.addEventListener('message', function (e) {
    do something with e... 
}, false);

然后,在getJSON中,将data变量作为消息传递给webworker。

$.getJSON(url, function(data) {  
    var x="";  
    worker.postMessage(data);
}

如果您的网络工作者能够与DOM进行交互(这是不可能的,但让我们忽略它),它会附加<li>项并返回stdge作为结果。在这种情况下,您声明的侦听器函数将是

worker.addEventListener('message', function (e) {
    stdge=e.data;
    worker.terminate();
}, false);

我不知道您为什么要使用WebWorker来执行此操作,但作为概念证明,它可以正常工作。

理论上它可以帮助你减轻迭代数据阵列的负担,但这可以忽略不计。 事实上,dom操作无法工作,因此您无法插入li元素。这意味着您需要在侦听器函数中执行此操作。

worker.addEventListener('message', function (e) {
    stdge=e.data;
    for (var i=0;i<stdge.length;i++) {
        $("#stdjgls ul").append("<li itemid="+i+"><a href=#vl>"+stdge[i]+"</a></li>");
    }
    worker.terminate();
}, false);

TD / LR

您正在创建一个新线程来迭代浅层数组。这简直太过分了。