js基础--异步

 1.关于异步的几个概念

(1)触发和执行不是一个意思

计数器的回调函数一定会在指定的delay后触发,但此时不一定立即执行,可能需要等待(等待所需的资源的释放)

(2)事件队列

onclick等由浏览器的内核DOM binding模块处理,当事件触发时,立即加入任务队列

setTimeout由timer模块进行延时处理,当时间到达时,它的回调才被加入任务队列

ajax由network模块处理,当网络请问完成时,回调才被加入任务队列

(3)setTimeout,setInterval

setTimeout是delay一定时间后将回调加入任务队列,而setInterval是每隔一定时间后将回调加入任务队列,但是如果此时任务队列里还有此回调,则会忽略此次,所以setInterval可能会出现中间某次没有执行的情况

(4)事件循环

js会创建一个类似while的循环,每次tick查看是否有待处理的事件,如果有就取出并放入主线程执行

(5)在es6,新增的任务队列,如(promise)优先级比任务队列优先级更高

2.promise

以前对于异步处理,我们都是通过回调来处理,将回调拆解成一个个的function,或者使用事件发布/监听模式等多种方式来处理较复杂的异步,

现在es6给出了新的解决方案,promise,对于不支持promise的IE11和Opera Mini,我们使用polyfill可处理,es6-promise

(1) promise内部实现了resolve和reject这两个回调,通过它们可修改promise对象的状态,将异步操作的结果通过参数传递出去

1
2
3
4
5
6
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信