博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript单线程实现
阅读量:6968 次
发布时间:2019-06-27

本文共 704 字,大约阅读时间需要 2 分钟。

对于Javascript的单线程实现一直一知半解的。开始以为很难,但是仔细看一下感觉还好。

首先明白一点,js是单线程的,也就是说js只能在同一时刻处理一段代码。但是js运行的环境浏览器却是可以多线程的,它具有多个线程,js代码处理引擎线程、事件触发线程、http请求线程、计时器触发线程。多者辅助,实现了js的异步处理。

准确的来说。这个实际上就是说,js引擎线程就是主程序。一旦碰上相应的例如计时器产生了,就先将这个定时器内部的代码先挂起,等到需要执行的时间到了,让计时器的线程提醒js该执行刚刚的代码了。js这样就达到了伪异步。

setTimeout(function(){    console.log('settime');}, 0);console.log('now');

例如以上输出的就实现输出now,然后输出settime。

这个是让我觉得最清楚的一个图了。蓝色整体代表着js引擎中要执行的代码部分。蓝色javascript的块是现在要执行的代码部分当我们想要出发interval或者点击事件等得时候事情都需要往后排。直到当前执行结束之后再进行处理后面的得代码。但是settimeout和setinterval还有一些区别,settimeout如果产生了,就将事情放到等待处理的序列中,但是settimeout每次毁掉触发的时候只会保留第一次需要执行的代码部分,如果第二次需要触发的时候,其中js引擎有使用的时候,就会将这一次回调触发抛弃。直到js部分闲下来了,就会立刻执行。

 

详细标准:

转载于:https://www.cnblogs.com/acefeng/p/8635518.html

你可能感兴趣的文章
自定义用户登录,会话保持,登录后自动跳转原页面
查看>>
Quartz的cronTrigger表达式
查看>>
李洪强经典iOS面试题11
查看>>
Ubuntu 14 常用“快捷键”,Ctrl + Alt + F1 进入终端,按 Ctrl + Alt + F7 回到界面
查看>>
知乎上关于游戏引擎的讨论
查看>>
挂单盯盘核心——从买盘和卖盘看庄家意图
查看>>
Atitit 知识图谱的数据来源
查看>>
解决:error: Cannot fetch repo (TypeError: expected string or buffer)
查看>>
netty Failed to submit an exceptionCaught() event异常
查看>>
oracle 11g RAC 的一些基本概念(三)
查看>>
api数据接口
查看>>
软件测试--测试Demo
查看>>
买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
查看>>
maven整合S2SH
查看>>
mysql锁监视器
查看>>
ramnit病毒
查看>>
Android 增量更新完全解析 是增量不是热修复
查看>>
Java多线程 wait, notify 和 notifyAll
查看>>
UI设计中px、pt、ppi、dpi、dp、sp之间的关系
查看>>
atitit 短信验证码的源码实现 .docx
查看>>