Skip to content
On this page

javascript 面试题汇总

什么是异步函数

js是单线程语言,同一时间只能处理一个人,如果请求得是后端,这个响应可能几秒之后才会响应,所以要先跳过这个任务,继续向下执行。这种等待主进程结束再执行的函数任务被称为异步函数。常见的异步函数有 async/awaitpromise定时器

微任务与宏任务

因为js是单线程语言,他就好比一个人再工作,但是同一时间只能做一项工作任务,所以就产生了任务队列,需要将接下来的工作都放在任务队列里面编排,干完一项任务之后再进行下一项任务。

但是任务队列还会分成三种:主任务队列、微任务队列、宏任务队列,每种不同的任务类型会放在不同的任务队列中,同步代码从上到下,都会放在主任务队列中;异步函数,如seTimeoutsetInterval,属于异步任务,会放在宏任务队列;那么微任务呢,指的就是Promise通过.then()的回调。

任务的优先级为: 主任务队列 > 微任务队列 > 宏任务队列

javascript
setTimeout(
  // 宏任务
  () => {
    console.log('setTimeout')
  }
)

// 主进程
new Promise((resolve) => {
  console.log('Promise')
  resolve('成功了')
}).then(
  // 微任务
  res => { console.log(res) }
)