目录
思考:JS单线程是如何实现异步的?
单线程,一次只能执行一个任务
浏览器内核的多线程实现
js异步场景
定时器
应用场景:防抖,节流,倒计时,动画(requestAnimationFrame)
网络请求
事件绑定
ES6的promise
EventLoop机制
宏任务和微任务,先执行微任务,再执行宏任务
让需要耗时并且会阻塞到主线程的任务,放到属于该任务自己的线程中执行
JS异步编程重点:
宏任务,微任务
EventLoop
Promise A+规范
// 异步编程相关面试题:
// 题目1:求输出结果
async function async1() {
console.log(1);
console.log(await async2());
console.log(2)
}
async function async2() {
console.log(3)
return 0
}
setTimeout(() => {
console.log(4)
new Promise((resolve,reject) => {
console.log(5)
resolve()
}).then(() => {console.log(6);})
});
async1();
new Promise((resolve, reject) => {
console.log(7)
resolve();
}).then(() => {
console.log(8)
})
console.log(9)