JS 事件队列

单线程的JS

JavaScript用来操作DOM的用途决定了必须使用单线程

同步任务和异步任务

  • 同步任务 : 在主线程中执行的任务 , 只有前一个任务执行完毕 , 才能执行后一个任务

  • 异步任务 : 不进入主线程 而进行入到任务队列 ,只有任务队列通知主线程 ,某个异步任务可以执行了, 那么该任务才会进行入到主线程执行

所有同步的任务都在主线程上执行 , 形成一个执行栈

主线程外,还存在一个任务队列 只要异步任务有了运行结果 才会在 任务队列中放置一个事件

一旦执行栈中的所有同步任务执行完毕 系统 就会读取任务队列,看看里面有哪些事件, 那些对应的异步任务 于是结果等待状态 进入执行栈 开始 执行

JS 事件队列_第1张图片

现实中的例子

比如你到银行办卡,如要排到你的时候,发现没有复印身份证这个你时候你只有从队列里出来, 后面的人不会等你,马上补位,等你各种东西都处理好了,必须重新取票排队

网页点击

通过上面的例子可以看到,当点击一个按钮时,并不是瞬间反应,而是会那将点击事件放在事件队列中,等主线程的执行栈处理完毕后再去事件队列中进行查询,然后先进先出的将事件放置在主线程的执行栈中执行

JS 事件队列_第2张图片

你可能感兴趣的:(JS 事件队列)