宏任务与微任务

193 阅读1分钟
  1. 同步与异步:

异步:

  • setTimeout,setInterval
  • ajax
  • 读取文件
  1. 单线程
  • js是单线程的,一个任务执行完成才能执行另外一个任务。
  1. process.nextTick(()=>{}),setImmediate(()=>{})
  • node 环境执行
  • 执行顺序:同步>process.nextTick>异步>setImmediate

image.png 4.宏任务与微任务

  • 宏任务 计时器,读取文件,ajax
  • 微任务 promise.then
  • 执行顺序 同步>process.nextTick>微任务>宏任务>setImmediate

async function async1() {
  console.log('AAAA');
  async2();
  console.log('BBBB');
}
async function async2() {
  console.log('CCCC');
}
console.log('DDDD');
setTimeout(function() {
  console.log('FFFF');
}, 0);
async1();
new Promise(function(resolve) {
  console.log('GGGG');
  resolve();
}).then(function() {
  console.log('HHHH');
});
console.log('IIII');





答案:
AAAA
CCCC
EEEE
IIII
HHHH
BBBB
DDDD