*js是单线程语言,只能同时做一件事情
异步:不会阻塞代码执行*
应用场景
- 网络请求:如Ajax
- 定时任务:如setTimeout
//promise
function getData(url){
return new Promise((resolve,reject)=>{
$.ajax({
url:url,
success(data){
resolve(data)
},
error(err){
reject(err)
}
})
})
}
const url1 = 'data1.json'
const url2 = 'data2.json'
getData(url1).then(data1=>{
console.log(data1)
return getData(url2)
}).then(data2=>{
console.log(data2)
}).catch(err=>{
console.log(err)
})
//promise加载图片
function loadImg(src){
new Promise((resolve,reject)=>{
const img = document.createElement("img")
img.onload = () => {
resolve(img)
}
img.onerror = () => {
const error = new Error(`图片加载失败${src}`)
reject(error)
}
img.src = src
})
}
const url = "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2111934553,104502141&fm=26&gp=0.jpg"
loadImg(url).then(img=>{
console.log(img.width)
}).catch(error=>{
console.error(error)
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。