天天看點

Promise--異步請求

先執行getData1,在執行getData2

let getData1=new Promise(function(resolve,reject){
    $.ajax({
        type:"get",
        url:".../getData1",
        success:function(data){
            if(data.state=="200"){
                resolve(data.data) // 在異步操作成功時調用
            }else{
                reject(data.msg); //在異步操作失敗時調用
            }
        }
    });
})
let getData2=new Promise(function(resolve,reject){
    $.ajax({
        type:"get",
        url:".../getData2",
        success:function(data){
            if(data.state=="200"){
                resolve(data.data) // 在異步操作成功時調用
            }else{
                reject(data.msg); //在異步操作失敗時調用
            }
        }
    });
})
getData1.then(function(res){
  return getData2(res)
}).then(function(res){
  console.log(res)
}).catch(function(err){
  console.log(err)
})
           

先執行getData1和getData2,在執行getData3

let getData3=new Promise(function(resolve,reject){
    $.ajax({
        type:"get",
        url:".../getData3",
        success:function(data){
            if(data.state=="200"){
                resolve(data.data) // 在異步操作成功時調用
            }else{
                reject(data.msg); //在異步操作失敗時調用
            }
        }
    });
})
           

Promise的all方法,等數組中的所有promise對象都完成執行

Promise.all([getData1,getData2]).then(function([ResultJson1,ResultJson2]){
    //這裡寫等這兩個ajax都成功傳回資料才執行的業務邏輯
  getData3()
})