美文网首页
web Workers使用

web Workers使用

作者: 幸福镰刀 | 来源:发表于2016-12-28 21:47 被阅读0次

Web Workers可以让web应用程序具备后台处理能力,使用Worker类加载一个javascript文件来开辟一个新的线程,起到互不阻塞执行的效果,并且提供主线程和新线程之间数据交换的接口:postMessage,onmessage。

主线程:
  • 初始化Web Workers:
worker = new Worker(URL); //URL可以是绝对路径或者是相对路径,只要同源的就行
  • 向worker发送数据
postMessage(data);
  • 收worker发送过来的数据
worker.onmessage = function (e) {
    console.log(e.target); //用来指向发送信息的worker
    console.log(e.data); //事件的data属性存有消息内容
}
  • 发送错误时的执行函数
worker.onerror = function (e) {
    console.log(
        e.message, //错误信息
        e.filename, //错误文件名
        e.lineno //错误行
    )
}
  • 终止一个worker的执行
worker.terminate()
worker线程:
  • 在worker中载入其他javascript文件
importScripts("worker1.js", "worker2.js", "worker3.js"); //它们会安顺序执行
  • 接受主线程发过来的数据
onmessage = function (e) {
    var msg = e.data;
}
  • 向主线程发送数据
postMessage(data)
  • 自己终止worker
self.close()
提醒:
  1. worker内代码不能访问DOM,可以访问navigator的部分属性
  2. 不能跨域加载JS
  3. 可以使用XMLHttpRequest来发送请求
示例:
//启动worker
var worker = new Worker("worker.js");
worker.postMessage(1);
worker.onmessage = function (e) {
    console.log(e.data);
}
//worker
onmessage = function (e) {
    var n = e.data;
    n++;
    postMessage(n);
}

相关文章

  • web Workers使用

    Web Workers可以让web应用程序具备后台处理能力,使用Worker类加载一个javascript文件来开...

  • 初探 HTML5 Web Workers

    原文:初探 HTML5 Web Workers 一、Web Workers是什么 Web Worker为Web内容...

  • JavaScript是如何工作的:Web Workers的构建块

    摘要: 理解Web Workers。 原文:JavaScript是如何工作的:Web Workers的构建块 + ...

  • Web Workers的使用

    自JavaScript诞生以来,还没有办法在浏览器UI线程之外运行代码。Web Workers API改变了这个状...

  • Web Workers

    Web Workers 分类及 5 个使用场景 how-javascript-works 作者:Troland链接...

  • 22. 使用 Sources 面板 Threads 调试

    如果您正在使用利用多个线程的JavaScript功能(例如Service Worker或Web Workers),...

  • Web Workers

    12月20号发布的Safri浏览器内核webkit表示自己开始支持service workers,这就意味的主流浏...

  • Web Workers

    当浏览器切换到后台运行,操作系统会把浏览器挂起,挂起之后,比如定时器,在回到原来页面的时候,会出现获取秒有重复的问...

  • Web Workers

    什么是Web Worker? 我们都知道HTML页面在执行script的时候是unresponsive的,直到sc...

  • Web Workers

    1.JS单线程 说起Web Workers,首先必须了解因为JS运行在浏览器中,是单线程的,每个window一个J...

网友评论

      本文标题:web Workers使用

      本文链接:https://www.haomeiwen.com/subject/uaprvttx.html