Promise 用于處理異步調(diào)用的返回值
語法
new Promise(function(resolve,reject){ })
Promise構(gòu)造器的參數(shù)是function類型,該function有兩個為方法類型的參數(shù),resolve和reject,如果調(diào)用了resolve說明該Promise被成功解析,而當(dāng)調(diào)用了reject時,表明該Promise的值不能用于后續(xù)處理也就是被拒絕了。這兩個方法主要用于初始化異步調(diào)用代碼,一旦異步代碼調(diào)用完成,要么調(diào)用resolve方法表示promise被成功機械,要么調(diào)用reject方法表明Promise被拒絕。
then(成功回調(diào)函數(shù),失敗回調(diào)函數(shù))
pending狀態(tài)的Promise對象可能被填充了(fulfilled)值,也可能被某種理由(異常信息)拒絕(reject)了。當(dāng)其中任一種情況出現(xiàn)時,Promise對象的then方法綁定的處理方法(handlers )就會被調(diào)用(then方法包含兩個參數(shù):onfulfilled和onrejected,它們都是Function類型。當(dāng)值被填充時,調(diào)用then的onfulfilled方法,當(dāng)Promise被拒絕時,調(diào)用then的onrejected方法, 所以在異步操作的完成和綁定處理方法之間不存在競爭)
基本用法
function doThings(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve('成功')
},0)
})
}
doThings().then(function(res){console.log(res)}) //輸出 - ‘成功’
鏈?zhǔn)接梅?/h3>
function doThings1(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve('成功1')
},0)
})
}
function doThings2(m){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve(m)
},0)
})
}
doThings1().then(function(res){return doThings2(res)}).then(function(res){ console.log(res)})
function doThings1(){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve('成功1')
},0)
})
}
function doThings2(m){
return new Promise(function(resolve,reject){
setTimeout(function(){
resolve(m)
},0)
})
}
doThings1().then(function(res){return doThings2(res)}).then(function(res){ console.log(res)})