一般情况下,在发送请求后,用返回的数据来进行接下来的处理。就需要嵌套一层或者嵌套多层。但是es6的promise可以解决这个看起来繁琐的问题。使用方法如下:
new Promise(function(resolve,reject){
//这里写执行的各种语句
if(成功){
resolve(这里可以传参)
}else{
reject(这里可以传参)
}
}).then(function(value){
console.log(value)},function(value){
console.log(value)
})
promise内部有三个状态:pending,fulfilled,rejected。从pending状态可以变为其余两种状态。
promise可以链式调用,但调用then方法后返回的是新的promise对象,传递的时候默认是执行resolve方法。但是如果:
第一个对象的状态是rejected,第二个的reject方法是undefined,就会把rejected状态传递到下一个then。
catch方法:catch(onReject)等价于then(undefined,onReject)但是catch可用来在很多then方法之后添加一个catch方法,统一处理前面的reject或者抛出的异常(throw new Error('错啦'))