-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
什么是Web Workers? #17
Comments
Web Workers技术,使得在后台的线程(与Web应用的主执行线程分离)中执行脚本成为可能。 |
Web Workers概念和用法 一个worker是一个使用类似Worker()这样的构造器创建的,它可以运行一个已命名的js文件。这个文件包含了经运行在worker线程中的代码;并且workers运行在另一个与当前window不同的全局上下文中。这个上下文由一个DedicateWorkerGlobalScope对象表示(标准workers由单个脚本使用;共享workers使用ShareWorkerGlobalScope)。 有一些例外,你可以在worker线程中运行任意的你喜欢的代码。例如,你不能直接在worker内部操作dom,或者使用一些默认的window对象上的方法。但是你可以使用大多数的在window更下一层的可用条目,包括WebSockets,和数据存储机制类似IndexedDB和火狐的OS数据存储api.查看workers可用的Functions和classes查看更多的详情。 通过操作系统的消息机制,数据在worker和主线程间发送,二者都用postMessage()方法发送消息,然后通过onmessage事件处理器作出响应(这个消息包含在消息事件的data属性中)。数据被复制而不是被共享。 Workers也许会产生新的worker,只要这些workers托管在相同的被当作父页面的源。另外,workers也许会为网络IO使用XMLHttpRequest ,除了XMLHttpRequest上的responseXML和channel属性总是返回null外。 |
除了标准worker外,还有以下几种worker
|
标准worker demo index.html
main.js
worker.js
|
共享worker demo和工作流程地址:http://mdn.github.io/simple-shared-worker/ |
最近在做一个vue的devops的项目,同事基于axios写了一段request/response拦截器的代码,其中有一个第一次遇到的FormData的类。
这个类的MDN文档下面有一行很不起眼的笔记。
那么到底什么是Web Workers呢?
我会竭尽毕生所学把下面这篇Web Workers的MDN文档翻译出来,并为demo绘制流程图,尝试理解。
原文地址:Web Workers API
The text was updated successfully, but these errors were encountered: