小程序API进行promise封装

小程序api充满异步回调(callback),很多时候会进入令人抓狂的回调地狱(callback hell) ,由于小程序对Javascript的proxy中间件不支持,我们采用数据劫持方法进行了promise封装。

初步实现,欢迎指正。

/** * @author Sir.X * @describe 对小程序异步方法进行promise封装 * @date 2018.03.12 */const API = {};//遍历wx进行封装Object.keys(wx).forEach((key) => {  if (key.substr(0, 2) !== 'on' && !/[\s\S]+Sync$/.test(key)) {    Object.defineProperty(API, key, {      // 获取api      get() {        // 返回api对应函数        // obj 传入的参数        return obj => {          // 创建promise对象          return new Promise((resolve, reject) => {            obj = obj || {};                        obj.success = (...args) => {              resolve(...args);            }            obj.fail = (...args) => {              reject(...args);            }            obj.complete = (...args) => {              // 空函数            }            // 对wx对象的api进行调用,并且传播promise状态            wx[key](obj);          })        }      }    })  } else {    Object.defineProperty(API, key, {      get() {        return (...args) => {          wx[key].apply(wx, args)        }      }    })  }})export default API;复制代码

/** * @author Sir.X * @describe 对小程序异步方法进行promise封装 * @date 2018.03.12 */const API = {};//遍历wx进行封装Object.keys(wx).forEach((key) => {  if (key.substr(0, 2) !== 'on' && !/[\s\S]+Sync$/.test(key)) {    Object.defineProperty(API, key, {      // 获取api      get() {        // 返回api对应函数        // obj 传入的参数        return obj => {          // 创建promise对象          return new Promise((resolve, reject) => {            obj = obj || {};                        obj.success = (...args) => {              resolve(...args);            }            obj.fail = (...args) => {              reject(...args);            }            obj.complete = (...args) => {              // 空函数            }            // 对wx对象的api进行调用,并且传播promise状态            wx[key](obj);          })        }      }    })  } else {    Object.defineProperty(API, key, {      get() {        return (...args) => {          wx[key].apply(wx, args)        }      }    })  }})export default API;复制代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值