前端面试总结05-异步
1.单线程和异步:
(1:JS是单线程语言,只能同时做一件事
(2:浏览器和Nodejs已支持JS启动进程,如WebWorker
(3:JS和DOM渲染共用同一个线程,因为JS可修改DOM结构
2.单线程与异步:
(1:遇到等待(网络请求,定时任务)不能卡住,故需要异步(回调callBack函数形式
3.异步与同步:
(1:基于JS是单线程语言
(2:异步不会阻塞代码执行
(3:同步会阻塞代码执行
异步:

同步:

异步 应用场景:
(1:网络请求,如AJAX图片加载

(2:定时任务,如setTimeout
promise产生的原因:
为了解决callback hell

手写promise加载一张图片
function loadImg(src){
const p = new Promise(
(resolve,rejecct)=>{
const img = document.createElement('img')
img.onload=()=>{
resolve(img)
}
img.onerror = () = >{
const err = new Error(`图片加载失败${src}`)
reject(err);
}
img.src=src;
}
)
return p;
}

浙公网安备 33010602011771号