美文网首页
浅谈JS线程

浅谈JS线程

作者: wade3po | 来源:发表于2019-02-03 09:17 被阅读3次

线程,对于后端的人来讲是很熟悉的,对于前端,却基本不会注意到。我们都知道JavaScript是单线程的,也就是说,同一个时间只能做一件事。说是为了避免复杂性,所以JavaScript从诞生就是单线程,将来也不会改变。

因为是单线程,我们开发的时候经常是有一个方法报错了,那么下面的方法也不会执行,这就是单线程。但是浏览器却又允许多线程执行。

虽然JavaScript是单线程,但是是有子线程存在的。

所以主线程下就会产生一个任务队列,相当于分为了两个任务,一个是同步任务,一个是异步任务。

同步任务,前一个任务执行完毕后,执行后一个任务,形成一个执行栈。

异步任务,也就是任务队列会先执行,有了结果就会返回一个事件,等待主线程读取。当主线程的同步执行完毕,就是主线程空了,那么就会读取任务队列。任务队列的结构是先进先出,当主线程读取了一个任务队列,那么这个主线程就会继续读取下一个任务队列,循环往复,直到执行完毕所有任务。

不同的是,JavaScript可以进行异步操作,一般一步操作有点击事件、定时器、ajax,所以有可能在读取任务队列的时候要到了规定时间或者是执行完了,主线程才会依次执行这些对应的回调函数。

比如

setTimeout( function(){ while(true){} } , 100);

setTimeout( function(){ alert(9) } , 100);

主线程读取这个定时器的任务后一直在执行while方法,主线程一直死循环,也就没办法执行完毕,那么下一个任务队列的线程就无法执行到。

由于线程机制使用不多,还无法准确理解,只能先写写自己最简单的理解。线程的内容还很多,有轮询、队列、浏览器的线程,这些都是需要一定的理解。

欢迎关注 Coding个人笔记 公众号

相关文章

  • 浅谈JS线程

    线程,对于后端的人来讲是很熟悉的,对于前端,却基本不会注意到。我们都知道JavaScript是单线程的,也就是说,...

  • 浅谈WKWebView使用、JS的交互

    浅谈WKWebView使用、JS的交互 浅谈WKWebView使用、JS的交互

  • js & jQuery 相关链接

    jquery获取当前页面的URL信息jQuery 教程移动端Web页面适配方案浅谈js运行机制(线程)JavaSc...

  • 从一道网易面试题浅谈OC线程安全

    从一道网易面试题浅谈OC线程安全 从一道网易面试题浅谈OC线程安全

  • 前端性能优化-浅谈js防抖和节流

    浅谈js防抖和节流

  • EventLoopGroup的分析

    EventLoopGroup与Reactor 浅谈 Reactor 线程模型 单线程模型 问题:当handler1...

  • 事件循环机制

    js是单线程的。浏览器: js执行线程:负责执行js代码 UI线程:负责UI展示,负责展示给用户看到的页面 js事...

  • 01.JS执行机制

    浏览器常驻线程 我们常说JS是单线程,但是浏览器中包含了很多线程-- js引擎线程(解释执行js代码,用户输入,网...

  • js event-loop

    单线程 js是单线程是众所周知的事情,那么为什么js会被设计成单线程呢。因为如果js为多线程的话。如果一个线程在读...

  • JavaScript 执行机制

    五个线程 js引擎线程: 执行js代码GUI线程: 绘制用户界面http网络请求线程: 处理网络请求, 等请求返回...

网友评论

      本文标题:浅谈JS线程

      本文链接:https://www.haomeiwen.com/subject/gobssqtx.html