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 相关文章推荐
jquery内置验证(validate)使用方法示例(表单验证)
Dec 04 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
控制文字内容的显示与隐藏示例
Jun 11 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
Aug 12 Javascript
jquery及js实现动态加载js文件的方法
Jan 21 Javascript
学习掌握JavaScript中this的使用技巧
Aug 29 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
微信、QQ、微博、Safari中使用js唤起App
Jan 24 Javascript
基于layui数据表格以及传数据的方式
Aug 19 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 Javascript
vuex存储token示例
Nov 11 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
PHP 透明水印生成代码
2012/08/27 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
PHP 验证登陆类分享
2015/03/13 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
php中用unset销毁变量并释放内存
2020/05/10 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
layui实现三级联动效果
2019/07/26 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
python基础教程之基本内置数据类型介绍
2014/02/20 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
管理站站长岗位职责
2013/11/27 职场文书
函授自我鉴定范文
2014/02/06 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
Python WSGI 规范简介
2021/04/11 Python
详细了解java监听器和过滤器
2021/07/09 Java/Android
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang
Redis批量生成数据的实现
2022/06/05 Redis