同步可以理解为一种线性的执行方式,在执行玩一段代码后,会一直等待系统放回消息或状态值,此时程序一直处于阻塞状态,直到系统返回消息后才可以往下进行。
异步可以理解为一种并行的执行方式,不需要等到一个程序执行完成就可以并行的执行其他程序或任务,在异步中通常使用回调函数来处理结果。在js中实现异步的方式有ajax和h5新增的web worker。
使用web worker的限制:
1、同源限制:分配给web worker线程执行的脚本文件必须与主线程脚本文件同源。
2、Worker线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的dom对象,也无法使用document、window、parent等对象,但是可以使用navigator对象和location对象。
3、通信联系:worker线程和主线程不在同一个上下文环境,他们不能直接通信,必须通过消息完成。
4、脚本限制:worker线程不能执行alert()方法和confirm()方法,但是可以使用XMLHttpRequest对象发出ajax请求。
5、Worker线程不能访问本机的文件系统(file://),他所加载的脚本必须来源于网络。