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 技巧和窍门整理(8个)
Apr 22 Javascript
浅说js变量
May 25 Javascript
通过action传过来的值在option获取进行验证的方法
Nov 14 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
Nov 15 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
Node.js操作redis实现添加查询功能
May 25 Javascript
Vue组件中slot的用法
Jan 30 Javascript
在vue中使用公共过滤器filter的方法
Jun 26 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
vue项目中openlayers绘制行政区划
Dec 24 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/04/24 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
juqery 学习之六 CSS--css、位置、宽高
2011/02/11 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
python多线程用法实例详解
2015/01/15 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
django修改models重建数据库的操作
2020/03/31 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
出差报告怎么写
2014/11/06 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP