Promise的三种状态
Pending:进行中 | Resolved(已完成)|Rejected(已失败)例子
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)
})
错误捕捉catch
可以用catch来捕捉错误。封装一个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接受一个由多个promise对象,包装成一个新的promise对象.
如下,三个promise对象必须都是resolve状态,这个新的promise对象才会是resolve状态
** 在平时的开发中,我们可能碰到这种情况,需要多个接口的返回的数据拼装在一起渲染页面之后再执行相应的事件,这时,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()
将现有对象转换成为一个promise对象Promise.reject
将现有对象转换成为一个promise对象
只不过对象状态为rejec
日后会补上自己对co模块的使用和理解,这一块内容准备放在koa内容里写