webWorker:为JS创建多线程环境,主线程创建一个worker线程,将一些耗时任务分配给worker线程,等worker线程执行完毕之后,再把结果给主线程(依赖http协议)。
webWorker有什么限制:
同源限制:分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源,只能运行在同源策略下。
DOM限制:Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用document、window、parent这些对象。但是,Worker 线程可以使用navigator对象和location对象。web worker的出现是为了解决耗时任务引起的性能问题,不建议操作DOM。
通信联系:Worker 线程和主线程不在同一个上下文环境(不在一条路),它们不能直接通信,必须通过消息完成。
脚本限制:Worker 线程不能执行alert()方法和confirm()方法,但可以使用 XMLHttpRequest 对象发出 AJAX 请求。
文件限制:Worker 线程无法读取本地文件,即不能打开本机的文件系统(file://),它所加载的脚本,必须来自网络。
网络通信协议(http、https):缺点:通信(请求)只能由客户端发起,客户端向服务端发送请求,服务器返回结果,无法做到服务器主动想客户端推送信息。
轮询(每隔一段时间,发送一个请求):客户端每隔一段时间,向服务器发送一个请求,查看服务器有没有新的信息。
轮询缺点:轮询效率太低,非常浪费资源(因为要不停的发送请求,来询问服务器是否有新的信息)