回调地狱一向是影响开发和维护的症结所在,无数个success()的嵌套再嵌套,导致代码层级颇深,盘一次逻辑都要费劲千辛万苦,ES6语法中的Promise,便是专为解决JS中异步请求回调的信任问题而存在的,结合小程序目前提供的API支持,可以用Promise将其进行简单封装,优化性能体验。具体代码如下(注意看注释):
1. 首先在公共的util.js(或者自己创建的公有JS文件)中加入如下方法:
/**
* wxPromisify 使用promise封装request请求
* @fn 传入的函数,如wx.request、wx.download
*/
function wxPromisify(fn) {
return function(obj = {}) {
return new Promise((resolve, reject) => {
obj.success = function(res) { //网络通畅,请求发送成功
console.log(res)
if (res.data.code == 200) { //判断后台返回的状态码,若是成功,返回resolve()
return resolve(res)
} else { //若是返回错误的状态码,弹窗提示失败信息,并附带错误代码,以便快速定位问题所在
wx.showModal({
title: res.data.msg,
content: "错误码:" + res.dat