JS中promise化微信小程序api


Posted in Javascript onApril 12, 2018

promise化的原因

微信小程序的api用的是对象参数回调模式,很容易造成回调地狱,代码难以阅读,判断,修改 和调试.

微信小程序api示例

// 获取用户信息
  wx.getSetting({
   success: res => {
    if (res.authSetting['scope.userInfo']) {
     // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
     wx.getUserInfo({
      success: res => {
       // 可以将 res 发送给后台解码出 unionId
       this.globalData.userInfo = res.userInfo
      }
     })
    }
   }
  })

可以看出两层的时候,代码就很别扭了

promise化小程序

编写一个可以promise小程序api的公用函数

function promisify (method, options = {}) {
 return new Promise((resolve, reject) => {
  // 将options对象赋值 然后再传给下面调用的方法中
  options.success = resolve
  options.fail = err => {
   reject(err)
  }
  wx[method](options)
 })
}

使用示例

传递的额外参数通过对象解构方式传递

promisify('getUserInfo')
 .then((res) => console.log(res))
 .catch((err) => {console.error(err)})

promisify('navigateTo', { url })
Javascript 相关文章推荐
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
Dec 04 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
May 22 Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
深入了解JavaScript 防抖和节流
Sep 12 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 Javascript
vue配置请求本地json数据的方法
Apr 11 #Javascript
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 #jQuery
JS实现的合并多个数组去重算法示例
Apr 11 #Javascript
JS实现的JSON数组去重算法示例
Apr 11 #Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
Apr 11 #jQuery
JS常用的几种数组遍历方式以及性能分析对比实例详解
Apr 11 #Javascript
node结合swig渲染摸板的方法
Apr 11 #Javascript
You might like
PHP URL参数获取方式的四种例子
2014/02/28 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
后勤人员岗位职责
2013/12/17 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
高中生自我评语大全
2014/01/19 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
工作简历的自我评价
2019/05/16 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL