https://developers.google.com/web/fundamentals/getting-started/primers/promises
Promise 已获得 JavaScript 的原生支持!
https://developers.google.com/web/fundamentals/getting-started/primers/promises#promise-terminology
https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API
Web Workers是一种机制,通过它可以使一个脚本操作在与Web应用程序的主执行线程分离的后台线程中运行。
这样做的优点是可以在单独的线程中执行繁琐的处理,让主(通常是UI)线程运行而不被阻塞/减慢。
https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers
https://developer.mozilla.org/zh-CN/docs/Web/API/Worker/Worker
Worker() 构造函数创建一个 Worker 对象,该对象执行指定的URL脚本。
这个脚本必须遵守 同源策略 。
如果 此URL有一个无效的语句,或者违反同源策略,则会抛出一个 SECURITY_ERR 类型的DOMException 。
https://developer.mozilla.org/zh-CN/docs/Web/API/Worker/postMessage
Worker 接口的 postMessage()方法向worker的内部作用域发送一个消息。
这接受单个参数,这是要发送给worker的数据。
数据可以是由结构化克隆算法处理的任何值或JavaScript对象,其包括循环引用。
https://developer.mozilla.org/zh-CN/docs/Web/API/ServiceWorker
ServiceWorker API 的 ServiceWorker接口 提供一个对一个服务工作者的引用。
多个浏览上下文(例如页面,工作者等)可以与相同的服务工作者相关联,每个都通过唯一的ServiceWorker对象。
https://developer.mozilla.org/zh-CN/docs/Web/API/Service_Worker_API/Using_Service_Workers
本文提供了有关开始使用 service workers所需的信息。
包括基本架构、注册一个service worker、一个新service worker的安装和激活过程、更新你的service worker、缓存控制和自定义响应,
这一切都在一个简单的具有离线功能的应用程序的上下文中。
https://serviceworke.rs/
https://github.com/mozilla/serviceworker-cookbook
https://www.cnblogs.com/yanxiaodi/p/5750860.html
https://www.cnblogs.com/whitewolf/p/5851196.html
https://github.com/greengerong/rebirth
https://www.cnblogs.com/jasondan/p/6380597.html
https://github.com/stanzhai/be-a-professional-programmer
https://www.cnblogs.com/bymax/p/5878113.html
https://www.cnblogs.com/sb19871023/p/3894452.html
chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://liubin.org/promises-book/javascript-promise-book.pdf
https://dwqs.gitbooks.io/frontenddevhandbook/content/practice/front-end-skills.html
https://www.cnblogs.com/whitewolf/
https://github.com/greengerong/rebirth
https://github.com/greengerong/rebirth
https://www.cnblogs.com/whitewolf/
http://greengerong.com/
https://www.amazingcounters.com/
http://greengerong.com/blog/2016/01/30/zone-dot-js-bao-li-zhi-mei/
http://greengerong.com/blog/2015/11/18/javascript-duo-xian-cheng-zhi-html5-web-worker/
http://greengerong.com/blog/2015/10/22/promisede-miao-yong/
http://greengerong.com/blog/2015/10/27/javascript-single-thread-and-browser-event-loop/
http://greengerong.com/blog/2015/11/20/ni-ying-gai-zhi-dao-de-jqueryji-qiao/
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestAnimationFrame
window.requestAnimationFrame() 方法告诉浏览器您希望执行动画,并请求浏览器调用指定的函数在下一次重绘之前更新动画。该方法将在重绘之前调用的回调作为参数。
http://greengerong.com/blog/2015/11/18/javascript-duo-xian-cheng-zhi-html5-web-worker/
http://plnkr.co/edit/IoXkPw?p=preview
https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers
https://gist.github.com/xgqfrms-GitHub/0b568d347fdf84fb07119491610efc92
IndexedDB
https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API
IndexedDB 是一种低级API用于客户端存储大量结构化数据(包括, 文件/ blobs)。
该API使用索引来实现对该数据的高性能搜索。
虽然 DOM 存储 对于存储较少量的数据很有用,但对于存储更大量的结构化数据来说,这种方法不太有用。
IndexedDB提供了一个解决方案。