如果阅读有疑问的话,欢迎评论或私信!!
本人会很热心的阐述自己的想法!谢谢!!!
文章目录
- Web Worker
- Worker之间通讯
- Worker销毁
Web Worker
当我们需要处理一些比较耗时的任务时,我们可能希望JavaScript可以提供多线程运行,因为当我们一直单线程运行的话可能会使我们的前台页面阻塞,严重的时候会影响我们与用户之间的交互性。
但是,像浏览器这样的环境下,可以很容易的提供多个JavaScript引擎实例,各自运行在自己的线程上。程序中每一个这样的独立的多线程部分被称为一个Worker,这种类型的并行化被称为任务并行,因为其重点在于把程序划分为多个块来并发运行。可以像下面这样实例化一个Worker:
var w1 = new Worker( " https:一个地址/...js" );
这里的URL是一个js文件,而不应该是一个HTML页面!这个文件会被加载在一个Worker中,然后浏览器启动一个独立的进程,让这个文件在这个线程中作为独立的程序运行。
这种通过URL创建的Worker称为专用Worker
。
Worker之间通讯
在下面代码中,Worker w1对象是一个事件侦听者和触发者,可以通过订阅它来获得这个这个Worker发出的事件以及发送事件给这个Worker。
w1.addEventListener("message",functoin(evt){})
也可以发送"message"事件给这个Worker
w1.postMessage("something")
Worker销毁
暂存…