*js是单线程语言,只能同时做一件事情
异步:不会阻塞代码执行*

应用场景
  1. 网络请求:如Ajax
  2. 定时任务:如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)
})

用户bPbA4lM
103 声望9 粉丝

引用和评论

0 条评论