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中的public和private对象,即static修饰符
Jan 18 Javascript
转义字符(\)对JavaScript中JSON.parse的影响概述
Jul 17 Javascript
解读Bootstrap v4 sass设计
May 29 Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 Javascript
JS中递归函数
Jun 17 Javascript
简述jQuery Easyui一些用法
Aug 01 jQuery
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
配置一个vue3.0项目的完整步骤
Apr 26 Javascript
layui添加动态菜单与选项卡
Jul 26 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 Javascript
使用jquery实现轮播图效果
Jan 02 jQuery
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中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
php 类自动载入的方法
2015/06/03 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
JavaScript 无符号右移运算符
2009/04/17 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
详解在Python和IPython中使用Docker
2015/04/28 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Django缓存系统实现过程解析
2019/08/02 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
django 多数据库及分库实现方式
2020/04/01 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
台湾旅游网站:灿星旅游
2018/10/11 全球购物
初三家长会邀请函
2014/01/18 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
办公用品管理制度
2015/08/04 职场文书
2019思想汇报范文
2019/05/21 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
Python音乐爬虫完美绕过反爬
2021/08/30 Python