元数据
JavaScript高级程序设计(第4版)
- 书名: JavaScript高级程序设计(第4版)
- 作者: 马特·弗里斯比
- 简介:
- 出版时间
- ISBN:
- 分类:
- 出版社: 人民邮电出版社
高亮划线
27.1 工作者线程简介
-
📌 工作者线程能够使用SharedArrayBuffer在多个环境间共享内容。 ^CB-1sAEnCEnXFhu6aE6YE-193-1908-1945
- ⏱ 2022-07-26 02:30:33
-
📌 工作者线程是以实际线程实现的。 ^CB-1sAEnCEnXFhu6aE6YE-193-1100-1317
- ⏱ 2022-07-26 02:31:02
-
📌 工作者线程不一定在同一个进程里。 ^CB-1sAEnCEnXFhu6aE6YE-193-2464-2695
- ⏱ 2022-07-26 02:31:08
-
📌 工作者线程有自己独立的事件循环、全局对象、事件处理程序和其他JavaScript环境必需的特性。 ^CB-1sAEnCEnXFhu6aE6YE-193-3056-3104
- ⏱ 2022-07-26 02:31:54
-
📌 三种主要的工作者线程:专用工作者线程、共享工作者线程和服务工作者线程。 ^CB-1sAEnCEnXFhu6aE6YE-193-3495-3907
- ⏱ 2022-07-26 02:32:55
-
📌 专用工作者线程,顾名思义,只能被创建它的页面使用。 ^CB-1sAEnCEnXFhu6aE6YE-193-4229-4254
- ⏱ 2022-07-26 02:33:54
-
📌 拦截、重定向和修改页面发出的请求 ^CB-1sAEnCEnXFhu6aE6YE-193-4581-4597
- ⏱ 2022-07-26 02:36:06
27.2 专用工作者线程
-
📌 可以把专用工作者线程称为后台脚本(background script)。 ^CB-1sAEnCEnXFhu6aE6YE-194-1239-1366
- ⏱ 2022-08-06 01:25:43
-
📌 只能从与父页面相同的源加载 ^CB-1sAEnCEnXFhu6aE6YE-194-2870-2883
- ⏱ 2022-08-06 01:27:29
-
📌 创建之后,专用工作者线程就会伴随页面的整个生命期而存在,除非自我终止(self.close())或通过外部终止(worker.terminate())。即使线程脚本已运行完成,线程的环境仍会存在。 ^CB-1sAEnCEnXFhu6aE6YE-194-9416-9514
- ⏱ 2022-08-06 11:01:34
-
📌 初始化时,虽然工作者线程脚本尚未执行,但可以先把要发送给工作者线程的消息加入队列。这些消息会等待工作者线程的状态变为活动,再把消息添加到它的消息队列。 ^CB-1sAEnCEnXFhu6aE6YE-194-8756-8831
- ⏱ 2022-08-06 11:02:53
-
📌 工作者线程不需要执行同步停止,因此在父上下文的事件循环中处理的”bar”仍会打印出来。 ^CB-1sAEnCEnXFhu6aE6YE-194-10182-10277
- ⏱ 2022-08-06 11:04:50
-
📌 在整个生命周期中,一个专用工作者线程只会关联一个网页 ^CB-1sAEnCEnXFhu6aE6YE-194-11145-11171
- ⏱ 2022-08-06 11:09:13
-
📌 MessageChannel实例有两个端口,分别代表两个通信端点。 ^CB-1sAEnCEnXFhu6aE6YE-194-20670-20703
- ⏱ 2022-08-07 18:26:20
-
📌 结构化克隆算法可用于在两个独立上下文间共享数据。该算法由浏览器在后台实现,不能直接调用。在通过postMessage()传递对象时,浏览器会遍历该对象,并在目标上下文中生成它的一个副本。 ^CB-1sAEnCEnXFhu6aE6YE-194-26275-26508
- ⏱ 2022-08-07 18:40:42
-
📌 使用可转移对象(transferable objects)可以把所有权从一个上下文转移到另一个上下文。 ^CB-1sAEnCEnXFhu6aE6YE-194-28122-28277
- ⏱ 2022-08-07 18:41:58
-
📌 只有如下几种对象是可转移对象:❑ ArrayBuffer❑ MessagePort❑ ImageBitmap❑ OffscreenCanvaspostMessage()方法的第二个可选参数是数组,它指定应该将哪些对象转移到目标上下文。 ^CB-1sAEnCEnXFhu6aE6YE-194-28307-28638
- ⏱ 2022-08-07 18:43:41
-
📌 worker.postMessage(arrayBuffer, [arrayBuffer]); ^CB-1sAEnCEnXFhu6aE6YE-194-29738-29813
- ⏱ 2022-08-07 18:46:50
-
📌 worker.postMessage(arrayBuffer); ^CB-1sAEnCEnXFhu6aE6YE-194-29057-29091
- ⏱ 2022-08-07 18:46:59
-
📌 SharedArrayBuffer作为ArrayBuffer能够在不同浏览器上下文间共享。在把SharedArrayBuffer传给postMessage()时,浏览器只会传递原始缓冲区的引用。结果是,两个不同的JavaScript上下文会分别维护对同一个内存块的引用。 ^CB-1sAEnCEnXFhu6aE6YE-194-31169-31304
- ⏱ 2022-08-07 18:50:37
-
📌 为解决该问题,可以使用 ^CB-1sAEnCEnXFhu6aE6YE-194-34212-34223
- ⏱ 2022-08-07 18:52:59
-
📌 Atomics.add() ^CB-1sAEnCEnXFhu6aE6YE-194-34296-34309
- ⏱ 2022-08-07 18:53:10
27.3 共享工作者线程
-
📌 共享工作者线程与专用工作者线程的一个重要区别在于,虽然Worker()构造函数始终会创建新实例,而SharedWorker()则只会在相同的标识不存在的情况下才创建新实例。 ^CB-1sAEnCEnXFhu6aE6YE-195-2279-2365
- ⏱ 2022-08-07 21:13:38
-
📌 共享工作者线程标识源自解析后的脚本URL、工作者线程名称和文档源。 ^CB-1sAEnCEnXFhu6aE6YE-195-2510-2543
- ⏱ 2022-08-07 21:13:54
-
📌 专用工作者线程只跟一个页面绑定,而共享工作者线程只要还有一个上下文连接就会持续存在。 ^CB-1sAEnCEnXFhu6aE6YE-195-6547-6589
- ⏱ 2022-08-07 21:18:35
27.4 服务工作者线程
-
📌 服务工作者线程(service worker)是一种类似浏览器中代理服务器的线程,可以拦截外出请求和缓存响应。 ^CB-1sAEnCEnXFhu6aE6YE-196-396-549
- ⏱ 2022-08-07 21:22:05
-
📌 来自一个域的多个页面共享一个服务工作者线程。 ^CB-1sAEnCEnXFhu6aE6YE-196-732-754
- ⏱ 2022-08-07 21:23:17
-
📌 服务工作者线程在两个主要任务上最有用:充当网络请求的缓存层和启用推送通知。 ^CB-1sAEnCEnXFhu6aE6YE-196-867-904
- ⏱ 2022-08-07 21:24:10
-
📌 (Ctrl+Shift+R)。强制刷新会强制浏览器忽略所有网络缓存,而服务工作者线程对大多数主流浏览器而言就是网络缓存。 ^CB-1sAEnCEnXFhu6aE6YE-196-1537-1597
- ⏱ 2022-08-07 21:26:05
-
📌 navigator.serviceWorker.register(‘./emptyServiceWorker.js’); ^CB-1sAEnCEnXFhu6aE6YE-196-2525-2624
- ⏱ 2022-08-07 21:28:33
-
📌 服务工作者线程API只能在安全上下文(HTTPS)下使用。 ^CB-1sAEnCEnXFhu6aE6YE-196-11324-11353
- ⏱ 2022-08-07 21:32:59
-
📌 CacheStorage通过字符串映射到Cache对象。Cache对象跟CacheStorage一样,类似于异步的Map。Cache键可以是URL字符串,也可以是Request对象。这些键会映射到Response对象。 ^CB-1sAEnCEnXFhu6aE6YE-196-24135-24244
- ⏱ 2022-08-07 21:43:18
-
📌 已激活状态表示服务工作者线程正在控制一个或多个客户端。在这个状态,服务工作者线程会捕获其作用域中的fetch()事件、通知和推送事件。 ^CB-1sAEnCEnXFhu6aE6YE-196-46650-46763
- ⏱ 2022-08-07 21:51:23
-
📌 服务工作者线程是无状态的 ^CB-1sAEnCEnXFhu6aE6YE-196-50914-50926
- ⏱ 2022-08-07 21:54:10
-
📌 如果浏览器检测到某个服务工作者线程空闲了,就可以终止它并在需要时再重新启动。这意味着可以依赖服务工作者线程在激活后处理事件,但不能依赖它们的持久化全局状态。 ^CB-1sAEnCEnXFhu6aE6YE-196-51265-51343
- ⏱ 2022-08-07 21:54:47