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的滚动鼠标放大缩小图片效果
Oct 27 Javascript
jQuery编程中的一些核心方法简介
Aug 14 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
js生成随机颜色方法代码分享(三种)
Dec 29 Javascript
Jquery实现无缝向上循环滚动列表的特效
Feb 13 jQuery
WebSocket的简单介绍及应用
May 23 Javascript
js简单实现自动生成表格功能示例
Jun 02 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 29 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
Nov 27 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
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
浅谈Node.js爬虫之网页请求模块
2018/01/11 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python多进程原理与用法分析
2018/08/21 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python的形参和实参使用方式
2019/12/24 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
梅西百货官网:Macy’s
2020/08/04 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
会计实习自我鉴定
2013/12/04 职场文书
行政专员岗位职责
2014/01/02 职场文书
干部对照检查材料范文
2014/08/26 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
五年级数学教学反思
2016/02/16 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android