码迷,mamicode.com
首页 > 其他好文 > 详细

同步和异步

时间:2018-10-20 11:45:56      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:console   绑定   使用   img   ajax   问题   png   分享图片   17.   

区别: 会不会阻塞当前程序运行

什么时候需要异步:

(1)需要等待的时候,等待过程不能卡在这吧

(2)等待过程不像alert一样阻塞程序运行

(3)等待的情况都要异步

使用异步的场景:

(1)定时任务,setTimeout,setInterval

(2)网络请求: ajax请求,动态<img>加载

(3)事件绑定,点击等交互事件

技术分享图片技术分享图片

 

 

 

几个问题:

1. 同步和异步的区别是什么

   同步阻塞代码运行,alert是同步,setTimeout是异步

2. 一个setTimeout的例子

技术分享图片

JS引擎扫描一遍,将事件按顺序加入任务队列,然后执行,此时注意setTimeout中的函数是在定时完成后才会加入队列

所以刚开始队列中 有 console.log(1),setTimeout(fn1,0),console.log(3),setTimeout(fn2,1000),console.log(5)

输出1,执行setTimeout后,再过0ms将fn1加入到任务队列尾部,此时队列中有console.log(3),setTimeout(fn2,1000),console.log(5),fn1

再输出3,执行setTimeout,过了1000ms将fn2加到任务队列尾部,输出5,再执行fn1,fn2

事件执行过程中的事件循环,JS引擎有个运行栈,不断从任务队列里读取任务运行,运行栈为空,便检查任务队列,一直加入,循环往复,直至任务队列也为空

 

同步和异步

标签:console   绑定   使用   img   ajax   问题   png   分享图片   17.   

原文地址:https://www.cnblogs.com/aizzz/p/9820942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!