题目
- 同步和异步的区别是什么?
- 手写用Promise加载一张图片
- 前端使用异步的场景哪些?
- setTimeout执行顺序
单线程
JS是单线程语言,只能同时做一件事儿;
JS和DOM渲染共用同一个线程,因为JS可修改DOM;
浏览器和nodejs已经支持JS启动进程
,如web worker
单线程弊端
遇到等待(网络请求,定时任务)会暂停执行,用户界面无响应;
解决单线程弊端的方式:
采用异步执行方式,以回调callback函数的形式
// 同步方式:
console.log(100);
alert(200); // 同步执行,阻塞代码执行
console.log(300);
// 异步方式:
console.log(100);
setTimeout(() => {// callback函数异步调用,不会阻塞代码执行
console.log(200);
});
console.log(300);
异步的应用场景
- 网络请求,如ajax图片加载
- 定时任务,如setTimeout
异步带来的问题
callback hell : 回调函数里面继续调用了回调函数
解决异步带来的callback hell问题
使用Promise