zoukankan      html  css  js  c++  java
  • 简简单单把event loop说清楚

      event loop这东西,确实把我坑了一把,面试的时候被问到这个问题的时候,我是懵逼的,完全不知道怎么回答,而当我回来查到原来这个听起来如此玄乎又厉害的名字就是异步和单线程那块的知识的时候,我心情又变得很复杂,怪我,不知道它有这么个高级的名字。

      其实这玩意相当简单,首先,js是一门单线程的语言,所谓单线程,一句话就可以讲清楚---“js不能同时做两件事,只能按顺序一件一件做”。

      这个顺序就比较通俗易懂了--“先同步,后异步”,js在执行代码的时候,会从上到下执行,如果发现你是一个同步事件,那就立即执行;如果发现你是一个异步事件,对不起,不管你是延迟0秒还是10秒,只要性质上属于异步事件,都放到事件队列里去等着。等到执行栈中(也就是存放主线程中所有的同步事件的东西)的同步事件处理完成了后,主线程就开始不断地去事件队列查询有没有可以拉过来执行的事件。(注意:在同步事件刚刚处理结束的时候,如果异步队列里有延时函数,它们是同时开始计时的)。

      而这个主线程循环不断地去事件队列里取事件的过程,就叫做事件循环。

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/8595775.html
Copyright © 2011-2022 走看看