zoukankan      html  css  js  c++  java
  • 面试题:汇总

    1、js是单线程还是多线程?

    js 是单线程。只能同一时间执行同一段代码。
    
    就比如说: 我这一句循环代码需要5s来执行 ,那么后面所有的代码都要等着我这个循环结束才能继续执行 。

    为什么要单线程?

    这是因为跟这门语言的用途有关。JavaScript作为浏览器脚本语言,主要用途是与用户互动,以及操作DOM。
    这就决定了它只能是单线程 ,否则会带来很多复杂的同步问题。
    为了避免复杂性,这个特性我相信将来也不会改变。

     2、事件循环的机制(Event loop)

    主线程只会做一件事,就是从消息队列里面取消息、执行消息。当消息队列为空时,就会等待消息队列变成非空。只有当前的消息执行结束,才会去取下一个消息。
    这种机制就叫做事件循环机制Event Loop,取一个消息并执行的过程叫做一次循环。
    
    简单来说:主线程从 任务队列 中读取事件,这个过程是循环不断的,这种运行机制成为事件循环。

    也可以简述为:

    1.所有的同步任务都在主线程上执行,形成一个执行栈。
    2.异步任务会被放置到 异步处理模块中,当异步任务有了运行结果,就将该函数移入任务队列中。
    3.一单执行栈中所有同步任务执行完毕,引擎就会读取任务队列,然后将任务队列中的第一个任务压入执行栈中运行。
    
    主线程不断重复第三步,也就是主线程空了们就会去读取任务队列,该过程不断重复,这个就是所谓的  事件循环。
    

      

  • 相关阅读:
    开始使用ACE工作
    I AM NOTHING vs I AM SOMETHING
    After you have run the GIS Server Post Install
    李开复的勇气论
    爱到底是什么?
    办公室交际不能碰触的“地雷”
    近日比较忙顾不上写随笔了
    什么是爱情?什么是婚姻?
    给自己科普一下SOA、AOP、ORM
    成功者需要具备的素质
  • 原文地址:https://www.cnblogs.com/liumcb/p/14035802.html
Copyright © 2011-2022 走看看