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 回调函数中变量作用域的讨论
Sep 11 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
Aug 02 Javascript
js和jquery中循环的退出和继续下一个循环
Sep 03 Javascript
JavaScript中的setMilliseconds()方法使用详解
Jun 11 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
Jun 03 Javascript
node.js基于mongodb的搜索分页示例
Jan 22 Javascript
mint-ui在vue中的使用示例
Apr 05 Javascript
JS使用Date对象实时显示当前系统时间简单示例
Aug 23 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
Oct 26 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
Aug 16 Javascript
Vue项目接入Paypal实现示例详解
Jun 04 Javascript
原生JavaScript实现拖动校验功能
Sep 29 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 shell命令合并图片的代码
2011/06/23 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
jQuery仿IOS弹出框插件
2017/02/18 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
小程序云开发实战小结
2018/10/25 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
vue实现登录功能
2020/12/31 Vue.js
python中的reduce内建函数使用方法指南
2014/08/31 Python
初学Python函数的笔记整理
2015/04/07 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
python多线程同步实例教程
2019/08/11 Python
Django rstful登陆认证并检查session是否过期代码实例
2019/08/13 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
中学教师岗位职责
2013/11/26 职场文书
抗震救灾标语
2014/06/26 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
专职安全员岗位职责
2015/04/11 职场文书
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python