JS本身是单线程语言,在h5中通过Web-Worker实现多线程,其本身只是一种模拟的手段,纸老虎。
js如何实现异步操作呢?即当前任务需要等太久时间才能完成,如何保证进程不堵塞?,首先将所有任务分为同步任务,异步任务。同步任务放入主线程中,一个接一个解决完成。异步任务则放入任务队列中,只有当任务队列中的任务通知主线程,才会去完成该任务。在主线程中的任务未完成前,是不会执行任务列表的任务的,就好比在while(true){};后新增 settimeout(function(){console.log(1)}),是不会输出任何值的,因为,主线程被卡死了。settimeout方法未设定时间会默认为0,但是一旦时间低于4ms都会默认4ms。
异步任务的方法:
1.setTimeout和setlnterval
2.DOM事件
3.ES6的promise
4.ajax请求