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的通用作用域

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容