解决方案 »

  1.   

    var numDiv,worker,num = 10000;
    window.onload = function () {
        numDiv = document.getElementById("numDiv");
        document.getElementById("start").onclick = startWorker;
        document.getElementById("stop").onclick = stopWorker;
    }function startWorker() {
        if (worker) {
           return;
        }
        worker = new Worker("count.js");
        worker.postMessage(num);
        worker.onmessage = function (e) {
            num = e.data;
            numDiv.innerHTML = num;
        }
    }
    function stopWorker(){
        if(worker){
            worker.terminate();
            worker = null;
        }
        else{alert("it is already stopped man!")}
    }var countNum = 0;
    function count(){
        onmessage = function (e) {
            countNum = e.data;
        }
        countNum = parseInt(countNum)+100;
        postMessage(countNum);
        setTimeout(count,100);
    }onmessage = function (e) {
        countNum = e.data;
        setTimeout(count,100);
    }
      

  2.   

    谢谢高人, 我大概明白了, 就是第一个JS文件多设一个全局变量num做为存储, 不管是否结束worker 该值都传递给worker, worker就是上一次结束基础上累加, 非常精妙。非常感谢!唯 一确定的是把第二段代码中如下这一部分删除对程序是没有影响的吧?onmessage = function (e) {
            countNum = e.data;
        }我删除了运行正常,应该是和onmessage做了两次同一件事