异步&单线程

题目(答案见每题下方空白处)

  1.同步和异步的区别?分别举一个同步和异步的例子

  同步会阻塞代码的执行,而异步则不会

  alert函数就是同步的指令,而setTimeout为异步指令

  2.setTimeout相关的笔试题

  

  执行结果为:135,之后是2,1秒后打印4

  3.前端使用异步的场景有哪些

  1.定时任务:setTimeout、setInterval

  2.网络请求:ajax请求、动态img加载

  3.事件绑定

  三者都需要等待,因为单线程的JS如果不添加异步机制,则必须执行完一个事件才可以执行下一个事件,阻塞了进程

知识点

异步

  异步可以理解成在执行代码期间,不阻塞进程,可以执行其他任务

  例如下方的代码

  

  执行的结果为100,300,200

  这里的200按照JS的解析顺序,应该在300之前,但是setTimeout是一个延时操作(异步),因此在这等待的1秒内,JS会执行下面其他不用等待的命令,1s后回来执行这个命令

  而下面这个同步的代码则执行结果不同

  

  执行时,先输出100,再弹出200,直到我们点击了弹出框后,才会弹出300

  这里的alert和两个输出都是同步任务,只有执行完一个,才会执行另一个

使用场景

  1.定时任务:setTimeout、setInterval

  2.网络请求:ajax请求、动态img加载

  3.事件绑定

单线程

  可以理解成一次只能执行一件事,事项需要排队进行

  由于JS是单线程的,只能执行完一个指令后执行下一个,但是也不能因为其中的某一项暂时无法执行(异步事件)而阻塞后续事件执行

  因此,这里的异步事件会暂存起来,符合条件后再执行(时间、回调成功、事件触发等)

posted @ 2019-09-25 21:55  且听风吟720  阅读(178)  评论(1编辑  收藏  举报