Web API-----Worker

Worker是什么?

Workers 使得一个Web应用程序可以在与主执行线程分离的后台线程中运行一个脚本操作。这样做的好处是可以在一个单独的线程中执行费时的处理任务,从而允许主线程运行而不被阻塞/放慢(异步性)。

Worker主要的API

  • onmessage

这是一个继承自Event的句柄对象,它是在后台线程被调用或者是后台线程返回一条消息给主线程的时候调用。使用语法如下:

    // 主线程内调用
    worker.onmessage = function(e) {
        console.log(e.data);  //输出传递的消息
    }

    // worker脚本内部调用
    onmessage = function(e) {
        console.log(e.data);  //输出传递的消息
    }
  • postmessage

这也是一个继承自Event的句柄对象,它是在主线程或者子线程接收message时被调用:

    // 主线程内调用
    worker.postmessage = function(e) {
        console.log(e.data);  //输出传递的消息
    }

    // worker脚本内部调用
    postmessage = function(e) {
        console.log(e.data);  //输出传递的消息
    }
  • onmessageerror

这也是一个继承自Event的句柄对象,它是在主线程或者子线程传递的message无法被序列化时被调用:

    // 主线程内调用
    worker.onmessageerror = function() {
         fn();  //异常处理
    }

    // worker脚本内部调用
    onmessageerror = function() {
        fn();  //异常处理
    }
  • close

worker内部可以通过调用这个方法终结子线程的工作,而外部主线程要杀死子线程可以调用terminate()

    // 主线程内调用
    worker.terminate()

    // worker脚本内部调用
    close() 
  • self

只读属性,类似于主线程中的window对象,表示任意worker的通用作用域

你可能感兴趣的:(Web API-----Worker)