Appearance
javascript 面试题汇总
什么是异步函数
js是单线程语言,同一时间只能处理一个人,如果请求得是后端,这个响应可能几秒之后才会响应,所以要先跳过这个任务,继续向下执行。这种等待主进程结束再执行的函数任务被称为异步函数。常见的异步函数有 async/await
、promise
、定时器
微任务与宏任务
因为js是单线程语言,他就好比一个人再工作,但是同一时间只能做一项工作任务,所以就产生了任务队列,需要将接下来的工作都放在任务队列里面编排,干完一项任务之后再进行下一项任务。
但是任务队列还会分成三种:主任务队列、微任务队列、宏任务队列
,每种不同的任务类型会放在不同的任务队列中,同步代码从上到下,都会放在主任务队列
中;异步函数,如seTimeout
、setInterval
,属于异步任务,会放在宏任务队列
;那么微任务
呢,指的就是Promise通过.then()的回调。
任务的优先级为: 主任务队列 > 微任务队列 > 宏任务队列
javascript
setTimeout(
// 宏任务
() => {
console.log('setTimeout')
}
)
// 主进程
new Promise((resolve) => {
console.log('Promise')
resolve('成功了')
}).then(
// 微任务
res => { console.log(res) }
)