Promise解决将多个异步执行控制成同步执行的问题
问题描述:多个回调函数顺序执行产生不可靠的回调(第二个异步依赖第一个异步的返回结果,第三个异步依赖第二个异步的结果,以此类推)。
解决方法:
以两个异步回调函数为例,三个异步回调函数以此类推
//第一个异步函数
var oneStep = function () {
return new Promise (function (resolve,reject) {
//执行返回成功的函数,data为返回的值
resolve(data)
//执行返回失败的reject,err错误的原因
reject(err)
})
}
//第二个异步函数,params为第一个异步resolve中传入的data值
var twoStep = function (params) {
return new Promise (function (resolve,reject) {
//执行返回成功的函数,data为返回的值
resolve(data)
//执行返回失败的reject,err错误的原因
reject(err)
})
}
将两个异步控制成同步,第二个回调函数的入参,依赖第一个回调函数返回的值。
oneStep().then(function(data){ //第一个then为第一个回调执行返回的结果
//将第一个回调函数成功的data值传入twoStep中
return twoStep (data)
},function(err){
//reject时的处理
}).then(function (data) { //第二个then为第二个回调执行返回的结果
//resolve处理方法
},function (err) {
//reject处理方法
})