回调地狱:代码完全一致,但是代码太过丑陋不方便维护,一个异步请求套着一个异步请求,一个异步请求依赖于另一个的执行结果,使用回调的方式相互嵌套。
- 解决回调地狱使用Promise,在js页面return new一个Promise,
- resolve表示请求已完成
- reject请求失败,状态表示拒绝
- 用.then的方式获取 resolve成功数据
- 用.catch来接收reject返回错误信息
- 需要多次使用时在后面一直添加.即可,免去不停调用的麻烦
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.promiseFn()接收实例化对象 第二步
.then(data=>{
//console.log(data)
return data;
})
.catch(err=>{
console.log(err)
})
.then(data2=>{
console.log(data2)
return data2;
})
},
第一步 写一个方法promiseFn()
promiseFn:function(){ /* 返回一个promise实例化对象 */
return new Promise((resolve,reject)=>{
wx.request({
url: '',接口
成功请求
success:(res)=>{
resolve(res.data)
},
失败请求
fail:(err)=>{
reject(err)
}
})
})
},