setImmediate介绍

time 2m04s
setTimeout cb中代码会在,js执行栈同步代码运行完之后运行

  1. setTimeout(() => {
  2. console.log('over');
  3. console.log('over');
  4. console.log('over');
  5. console.log('over');
  6. console.log('over');
  7. console.log('over');
  8. },0);
  9. console.log('starting');
  10. console.log('operating');

image.png

time 2m57s
setImmediate是等待下面完成后,再去完成

  1. setImmediate(() => {
  2. console.log('over');
  3. console.log('over');
  4. console.log('over');
  5. console.log('over');
  6. console.log('over');
  7. console.log('over');
  8. });
  9. console.log('starting');
  10. console.log('operating');

image.png
在浏览器中运行报错,需要在node中运行
image.png

setImmediate,比setTimeout更好的选择,但没有成为标准
image.png

image.png

setImmediate区别

time 13m30s

  1. setTimeout(() => {
  2. console.log('setTimeout');
  3. },0);
  4. setImmediate(() => {
  5. console.log('setImmediate');
  6. });

image.png
多次node运行,这两种结果都有可能
image.png

time 16m47s
你知识储备有多大,不仅仅是建立在你学了多少东西,还建立在你是不是每一个东西的文档都读透了,如果文档任何一句话你没有搞懂,就证明你不专业,出来听讲,还是得看文字,看完档
文档中的文字可以提供很多灵感

image.png

image.png

image.png

在io操作,耗时操作中,setImmediate总是会比setTimeout先执行,不管它前面有几个setTimeout,这是最大的优势
image.png
image.png