美文网首页
JS为什么是单线程的?JS的同步异步

JS为什么是单线程的?JS的同步异步

作者: JiAyInNnNn | 来源:发表于2019-06-13 10:21 被阅读0次

JavaScript语言最大的特点就是单线程。它是浏览器的脚本语言。在同一时间只能做一件事。用于操作DOM。如果JS是多线程的,当我在给一个DOM添加内容时,又删除了这个DOM,那么JS该怎么做。
所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它会「阻塞」其他任务。这个任务可称为主线程。

关于定时器的面试题
①当我在页面中正常输出123,再用定时器设置0毫秒后触发输出321,在浏览器的控制台会先输出什么?


代码
控制台输出的内容

②当我在页面中用定时器设置0毫秒后触发输出321,后正常输出123,在浏览器的控制台会先输出什么?


代码
控制台输出的内容

由于定时器是异步的,异步任务会在当前脚本的所有同步任务执行完才会执行。如果同步代码中含有死循环,即将上例的注释去掉,那么这个异步任务就不会执行,因为同步任务阻塞了进程。
如果同步代码中没有死循环,当执行到异步时,异步程序会放在一个队列中,当主线执行完后立马执行异步程序。

接下来我们说一下回调函数:回调函数就是一个参数,将一个函数作为参数传到另外一个函数里,当那个函数执行完之后,在执行传进去的这个函数,这个过程叫做回调。

浏览器是多线程的。

相关文章

  • js的事件循环和异步

    聊聊js的异步 首先,聊异步,得先弄清楚为什么不用同步,用同步会有什么问题,我们先明确一点,js的执行是单线程的,...

  • 简述JS执行机制 Event Loop

    1.同步异步 JS是单线程的,由上至下排队执行任务代码。为了提高JS的性能又区分为 同步任务 和 异步任务。同步任...

  • javascript的同步异步编程

    js中的同步和异步 同步js是单线程的,浏览器只会分配一个js引擎线程,用来执行js代码,当其执行代码时,js一次...

  • 异步操作

    同步任务/异步任务,微任务/宏任务ajaxPromisegeneratorawait/async js是单线程的,...

  • 运行机制,宏任务 与 微任务

    运行机制: JS 的本质是单线程执行 事件队列:同步任务,异步任务() 运行机制 1,JS 的本质是单线程执行 单...

  • JS同步和异步

    在了解JS同步异步前,我们应该先了解一下,为什么JavaScript是单线程语言。 单线程的概念 因为JavaSc...

  • 浏览器工作原理

    为什么js是单线程,web works是多线程? 为什么js单线程却拥有异步? event loop? 为什么se...

  • for循环中嵌套setTimeout,执行顺序和结果的理解

    同步优先、异步靠边、回调垫底!公式表达:同步 => 异步 => 回调 JS是单线程环境,也就是说代码的执行是 同步...

  • javascript异步详解1:事件循环机制EventLoop

    一. js运行机制 js是单线程,但是存在同步【阻塞】和异步【非阻塞】执行模式 同步:从上到下、从左到右的⽅式执⾏...

  • 3.1KOA Promise 语法

    Promise 语法 同步与异步 我们知道,JavaScript的执行环境是「单线程」。所谓单线程,是指JS引擎中...

网友评论

      本文标题:JS为什么是单线程的?JS的同步异步

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