285 H5 Web Workers

  • 可以让js在分线程执行

  • Worker

    var worker = new Worker('worker.js');
    worker.onMessage = function(event){event.data} : 用来接收另一个线程发送过来的数据的回调
    worker.postMessage(data1) : 向另一个线程发送数据

  • 问题:
    • worker内代码不能操作DOM更新UI
    • 不是每个浏览器都支持这个新特性
    • 不能跨域加载JS
  • svn版本控制
  • svn server

285 H5 Web Workers_第1张图片

285 H5 Web Workers_第2张图片


demo:使用 web workers计算斐波那契,验证执行效率





    
    06_Web Workers_测试



    

    
    
    



demo:使用 web workers计算斐波那契,验证执行效率





    
    06_Web Workers_测试



    

    
    
    



function fibonacci(n) {
    return n <= 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2) //递归调用
}

console.log(this)
this.onmessage = function(event) {
    var number = event.data
    console.log('分线程接收到主线程发送的数据: ' + number);
    //计算
    var result = fibonacci(number)
    postMessage(result)
    console.log('分线程向主线程返回数据: ' + result);
    // alert(result)  alert是window的方法, 在分线程不能调用
    // 分线程中的全局对象不再是window, 所以在分线程中不可能更新界面
}

你可能感兴趣的:(285 H5 Web Workers)