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 IE 浏览器判定代码
Mar 21 Javascript
js选项卡的实现方法
Feb 09 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
JavaScript中const、var和let区别浅析
Oct 11 Javascript
利用require.js与angular搭建spa应用的方法实例
Jul 19 Javascript
jquery动态添加带有样式的HTML标签元素方法
Feb 24 jQuery
微信小程序实现星星评价效果
Nov 02 Javascript
this在vue和小程序中的使用详解
Jan 28 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
Sep 06 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 Javascript
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 jQuery
关于angular引入ng-zorro的问题浅析
Sep 09 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
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
使用正则替换变量
2007/05/05 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
python发送arp欺骗攻击代码分析
2014/01/16 Python
python k-近邻算法实例分享
2014/06/11 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
Python装饰器基础详解
2016/03/09 Python
django实现用户登陆功能详解
2017/12/11 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
造价工程师个人求职信
2013/09/21 职场文书
交通安全寄语大全
2014/04/08 职场文书
优秀员工推荐信
2014/05/10 职场文书
辞职信格式模板
2015/02/27 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记