A. JS中promise對象的作用與使用
promise的作用:ajax是非同步請求,多層嵌套會造成回調地獄,promise模擬同步,將非同步回調類似於同步來處理業務邏輯。
var p = new Promise(function(){
//這里用於處理非同步的回調
}),必傳回調函數,不傳程序會拋出異常。
創建實例對象時,回調函數會立即執行。
promise的三種狀態:
pending:正在進行狀態
fulfilled:完成狀態
rejected:失敗狀態
傳參1 resolve,是個函數,只要這個函數執行了說明是成功狀態,參數2選傳,rejecte,是個函數,這個函數執行了說明是失敗狀態。這兩個只能執行一個,變化不可逆。
promise兩種結果:
從進行到失敗
從進行到成功
通過rejecte(data)h或者resolve(data)將非同步響應的數據提取出來,在promise外部使用。
promise的then方法,用於處理成功或者失敗的回調。
//接收上面的回調
var p1 =p.then(function(res){
})。執行後返回一個promise對象,但和p不是同一個對象。當p1執行了並且return出res,就可以連綴
p1=p.then(function(res){
return res
}).then(function(data){
//處理成功回調
}).catch(function(){
//處理失敗回調
})
可以簡寫p.then(function(res){
//處理成功信息
},function(err){
//處理異常信息
})。但一般不這樣寫。
使用案例如下,
promise的then方法是非同步方法,但會優先於定時器執行。