promise 对象解决es5中的异步执行操作
在es5中,常常有一个ajax 请求资源时,需要上一个ajax请求返回的参数,这时,写js的时候,会出现ajax嵌套的写法,这样代码看起来嵌套层次多,且给人感觉不是很好
例:
var p = new Promise(resolve,reject){
$.ajax({
type:‘post’,
url:‘login’,
data:{},
dataType:‘json’,
success:function(data){
resolve(data) // 请求成功时调用resolve函数方法
},
error:function(error){
reject(error) // 请求失败时调用reject函数方法
}
})
}.then(function(data){
console.log(data) // then方法是 函数执行成功时调用
$.ajax({
type:‘post’,
url:’’,
data:{name:data.name,age:data.age}, // 使用第一个请求返回的数据作为参数
dataType:‘json’,
success:function(data){
resolve(data) // 请求成功时调用resolve函数方法
},
error:function(error){
reject(error) // 请求失败时调用reject函数方法
}
})
}).catch(function(error){
console.log(error) // catch 方法是函数执行失败时调用
})
// 以上是promise 的简单用法,当然你也可以将请求ajax 封装,直接在promise对象中调用,这样看上去更加简洁