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中的ready方法及实现按需加载css,js实例代码
Sep 27 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
详解Vue使用命令行搭建单页面应用
May 24 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
Oct 20 jQuery
jQuery实现的回车触发按钮事件功能示例
Mar 25 jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
Angularjs 根据一个select的值去设置另一个select的值方法
Aug 13 Javascript
vue项目移动端实现ip输入框问题
Mar 19 Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
element中的$confirm的使用
Apr 26 Javascript
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
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中如何防止表单的重复提交
2013/08/02 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
动态样式类封装JS代码
2009/09/02 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
详解vue中组件参数
2018/07/09 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
python实现简单遗传算法
2020/09/18 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
业绩考核岗位职责
2014/02/01 职场文书
护士的自我鉴定
2014/02/07 职场文书
经典演讲稿开场白
2014/08/25 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
springboot入门 之profile设置方式
2022/04/04 Java/Android