异步和单线程
来源:前端小学生     阅读:968
魔方网络
发布于 2018-06-23 23:40
查看主页

单线程特点执行异步操作

js是单线程语言,浏览器只分配给js一个主线程,使用来执行任务(函数),但一次只可以执行一个任务,这些任务就会排队形成一个任务队列排队等候执行.一般而已,相对耗时的操作是要通过异步来进行加载,能避免导致页面的假死.

1

2

3

setTimeout(function(){

console.log(这是timeout事件回调);

},1000);

执行这段代码的时候,浏览器异步执行计时操作,传入setTimeout的函数会被暂存起来,当1000ms到了后,会触发定时事件,这个时候,就会把回调函数放到任务队列里,待所有程序执行完,处于空闲的状态时,会立马看看有没有暂存起来要执行的任务,整个程序就是通过这样的一个个事件驱动起来的,如下图1.1所示:

异步和单线程

图1.1 工作原理图

"任务队列"中的事件,除了IO设施的事件以外,还包括少量使用户产生的事件(比方鼠标点击、页面滚动等等),例如onClick事件,只需指定这些事件的异步操作,就会进入任务队列中等待执行.

同步和异步的区别

同步在执行的过程会阻塞I/O,在正常的流程中执行的顺序不同,例如setTimeout、setInterval,会改变流程执行的顺序,虽然setTimeout的time推迟时间为0,其中的function也会被放入一个队列中,等待下一个机会执行,当前的代码(指不需要加入队列中的程序)必需在该队列的程序完成之前完成,因而结果可可以不与预期结果相同。因而,异步可以改变流程执行的顺序,同步不会改变流程执行的顺序,依次执行.

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 网页前端 JS
相关推荐
让你的nginx支持php
Autoahotkey关于dllcall()函数最全面的解释
创立并发布自己的python板块
View绘制——怎样画?
前台面试每日 3+1 —— 第637天
首页
搜索
订单
购物车
我的