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 纠正 cleanWhitespace函数
Mar 11 Javascript
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
js脚本实现数据去重
Nov 27 Javascript
jQuery中[attribute^=value]选择器用法实例
Dec 31 Javascript
AngularJs解决跨域问题案例详解(简单方法)
May 19 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
jQuery查找节点方法完整实例
Sep 13 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
Bootstrap实现下拉菜单多级联动
Nov 23 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
使用layui的router来进行传参的实现方法
Sep 06 Javascript
vue中如何添加百度统计代码
Dec 19 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
Python将多个excel文件合并为一个文件
2018/01/03 Python
Python字典遍历操作实例小结
2019/03/05 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python实现名片管理系统
2020/02/14 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
职业生涯规划怎么写
2013/12/29 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
工厂见习报告范文
2014/10/31 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
接收函格式
2015/01/30 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang