Promise的三種狀態(tài)
Pending:進(jìn)行中 | Resolved(已完成)|Rejected(已失?。?/p>例子
var promise = new Promise(function(resolve,reject){
$.ajax({
success: function(data){
resolve(data)
},
error: function(err){
reject(err)
}
})})
使用
promise.then(function(data){
dosomething(data)
},function(err){
do something(err)
})
錯(cuò)誤捕捉catch
可以用catch來捕捉錯(cuò)誤。封裝一個(gè)promise方法
function getFn(url){
return new Promise(function(resolve,reject){
$.ajax({
url: url,
success: function(data){
resolve(data);
},
error: function(err){
reject(err)
}
})
})
}
//使用
getFn(url).then(function(data){
return getFn(url2)
}).then(function(url3){
})
- Promise.all()
promise.all接受一個(gè)由多個(gè)promise對象,包裝成一個(gè)新的promise對象.
如下,三個(gè)promise對象必須都是resolve狀態(tài),這個(gè)新的promise對象才會(huì)是resolve狀態(tài)
** 在平時(shí)的開發(fā)中,我們可能碰到這種情況,需要多個(gè)接口的返回的數(shù)據(jù)拼裝在一起渲染頁面之后再執(zhí)行相應(yīng)的事件,這時(shí),Promise.all就派上用場了**
var p1 = new Promise(function(resolve){resolve(111)});
var p2 = new Promise(function(resolve){resolve(222)});
var p3 = new Promise(function(resolve){resolve(333)});
Promise.all([p1,p2,p3]).then(data)
//[111,222,333]
Promise.resolve()
將現(xiàn)有對象轉(zhuǎn)換成為一個(gè)promise對象Promise.reject
將現(xiàn)有對象轉(zhuǎn)換成為一個(gè)promise對象
只不過對象狀態(tài)為rejec
日后會(huì)補(bǔ)上自己對co模塊的使用和理解,這一塊內(nèi)容準(zhǔn)備放在koa內(nèi)容里寫