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 相关文章推荐
用ASP将SQL搜索出来的内容导出为TXT的代码
Jul 27 Javascript
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
Aug 26 Javascript
jQuery实现当按下回车键时绑定点击事件
Jan 28 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
Jul 24 Javascript
js中用cssText设置css样式的简单方法
Sep 19 Javascript
JS控制HTML元素的显示和隐藏的两种方法
Sep 27 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
vue如何集成raphael.js中国地图的方法示例
Aug 15 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
Aug 16 Javascript
vue.js的简单自动求和计算实例
Nov 08 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
浅析Yii2中GridView常见操作
2016/04/22 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
javascript 动态添加表格行
2006/06/22 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
2011/03/25 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
Python编写屏幕截图程序方法
2015/02/18 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Python IDLE入门简介
2017/12/08 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
python处理“
2019/06/10 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
银行自荐信范文
2013/10/07 职场文书
土木工程专业大学毕业生求职信
2013/10/13 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书