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实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
js与运算符和或运算符的妙用
Feb 14 Javascript
js实现局部页面打印预览原理及示例代码
Jul 03 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
Sep 01 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
vue+iview写个弹框的示例代码
Dec 05 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
微信小程序HTTP接口请求封装的实现
Feb 21 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
May 05 Javascript
vue中keep-alive,include的缓存问题
Nov 26 Javascript
vue实现匀速轮播效果
Jun 29 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
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
微信小程序支付前端源码
2018/08/29 Javascript
vue实现分页栏效果
2019/06/28 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python处理Excel文件实例代码
2017/06/20 Python
python实现图书管理系统
2018/03/12 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
keras中的History对象用法
2020/06/19 Python
python三引号如何输入
2020/07/06 Python
基于python实现操作redis及消息队列
2020/08/27 Python
python 如何实现遗传算法
2020/09/22 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
学校安全管理责任书
2014/07/23 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
模范教师材料大全
2014/12/16 职场文书
英语读书笔记
2015/07/02 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书