异步的应用场景
- 网络请求,如ajax图片加载
- 定时任务,如setTimeout
网络请求:
打印start、打印end、网络请求的时候,传了一个回调函数。
这时候按照异步的逻辑来分析:
打印start,执行网络请求,执行完网络请求就不管了,因为异步,继续往下执行,打印end,什么时候网络请求回来,什么时候回来就什么时候打印data1,执行回调函数。
图片加载:先执行start,然后定义一个img,img.onload里的onload就是一个callback的一个形式,这是另外一个形式,img.onload赋值成一个回调函数,然后img.src赋值成xxx.png。src一旦赋值之后,图片会触发加载,加载完成之后,它这个过程中,我们就先不管了,先打印end。等图片加载完成之后,我们再去触发onload事件,这个回调函数,打印loaded
定时任务:
setInterval:也是定时器,但是它不是一次性的,它是一个循环的一种执行方式,所以说这也是一个异步。
核心代码演示:
//同步
console.log(100)
setInterval(function () {
console.log(200)
},1000)
console.log(300)
效果:200一直循环打印