1,什么是同步,异步
在我们学习的传统单线程编程中,程序的运行是同步的
(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。
JavaScript的单线程浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。
而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。
为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。
这样我们就可以在主线程处理一些简单的操作,在子线程处理消耗时间的代码,例如发送网络请求和处理大文件
简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。
2,Promise的使用
小案例
使用promise加载图片
function loadImg(){
return new Promise((resolve,reject)=>{
const img = document.createElement('img')
img.onload=()=>{
resolve(img)
}
img.onerr = ()=>{
reject(new Error("图片加载失败"))
}
img.src = src
})
}
const url = "https://dss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1603365312,3218205429&fm=26&gp=0.jpg"
loadImg(url).then(res=>{
console.log(res.width)
})