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入门教程(12) js对象化编程
Jan 31 Javascript
js 动态选中下拉框
Nov 26 Javascript
使用Firebug对js进行断点调试的图文方法
Apr 02 Javascript
将json当数据库一样操作的javascript lib
Oct 28 Javascript
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
用js屏蔽被http劫持的浮动广告实现方法
Aug 10 Javascript
解决layUI的页面显示不全的问题
Sep 20 Javascript
node.js开发辅助工具nodemon安装与配置详解
Feb 06 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
Sep 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
业余方法DIY电子管FM收音机
2021/03/02 无线电
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
javascript页面加载完执行事件代码
2014/02/11 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
Python 经典算法100及解析(小结)
2019/09/13 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
用Python解数独的方法示例
2019/10/24 Python
python Selenium 库的使用技巧
2020/10/16 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
cf战队收人广告词
2014/03/14 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
银行给客户的感谢信
2015/01/23 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
物业管理交接协议书
2016/03/24 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
Nginx的基本概念和原理
2022/03/21 Servers
JavaScript实现音乐播放器
2022/08/14 Javascript