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中3种实现继承的方法和代码实例
Aug 12 Javascript
JavaScript通过事件代理高亮显示表格行的方法
May 27 Javascript
angularjs实现文字上下无缝滚动特效代码
Sep 04 Javascript
JS实战篇之收缩菜单表单布局
Dec 10 Javascript
浅谈Javascript中的对象和继承
Apr 19 Javascript
vue轻量级框架无法获取到vue对象解决方法
May 12 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
JS获取动态添加元素的方法详解
Jul 31 Javascript
vue+element导航栏高亮显示的解决方式
Nov 12 Javascript
小程序自动化测试的示例代码
Aug 11 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 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 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
canvas雪花效果核心代码分享
2017/02/19 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
详解Python Socket网络编程
2016/01/05 Python
Python中几种导入模块的方式总结
2017/04/27 Python
python脚本实现验证码识别
2018/06/07 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Flask配置Cors跨域的实现
2019/07/12 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Django接收自定义http header过程详解
2019/08/23 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
Android面试题及答案
2015/09/04 面试题
成人毕业生自我鉴定
2013/10/18 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
关于环保的标语
2014/06/13 职场文书
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python