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 相关文章推荐
自动完成JS类(纯JS, Ajax模式)
Mar 12 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
Apr 26 Javascript
jQuery实现Tab菜单滚动切换的方法
Sep 21 Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 Javascript
AngularJS 日期格式化详解
Dec 23 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
Dec 31 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
Jul 07 Javascript
Vue之Watcher源码解析(2)
Jul 19 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
vue自定义switch开关组件,实现样式可自行更改
Nov 01 Javascript
JavaScript 反射学习技巧
Oct 16 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对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
简明json介绍
2008/09/28 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
js调试系列 初识控制台
2014/06/18 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
python递归函数绘制分形树的方法
2018/06/22 Python
基于python实现名片管理系统
2018/11/30 Python
python3.8下载及安装步骤详解
2020/01/15 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
十八大闭幕感言
2014/01/22 职场文书
初三学习决心书
2014/03/11 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
2015年防汛工作总结
2015/05/15 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
详解Flask开发技巧之异常处理
2021/06/15 Python
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技