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 常见学习网站与参考书
Nov 09 Javascript
jquery.validate分组验证代码
Mar 17 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
Jan 04 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
JavaScript事件委托实例分析
May 26 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
Javascript实现倒计时(防页面刷新)实例
Dec 13 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
May 30 Javascript
node的process以及child_process模块学习笔记
Mar 06 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
详解php中的implements 使用
2017/06/13 PHP
实现51Map地图接口(示例代码)
2013/11/22 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
js实现网页随机验证码
2020/10/19 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
Python判断直线和矩形是否相交的方法
2015/07/14 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python制作词云的方法
2018/01/03 Python
Python 统计字数的思路详解
2018/05/08 Python
python 表格打印代码实例解析
2019/10/12 Python
Python3并发写文件与Python对比
2019/11/20 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
法人身份证明书
2014/10/08 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
同学会演讲稿
2019/04/02 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
golang中的struct操作
2021/11/11 Golang