详解将微信小程序接口Promise化并使用async函数


Posted in Javascript onAugust 05, 2019

前言

小程序一直到现在接口还是和刚开始一样使用的回调函数的方式,如果想在小程序中不使用框架的情况下使用Promise+Async怎么办呢?

2019最新解决方案

1. 将接口Promise化

首先建一个文件wxPromise.js

const promisify = name => option => {
 return new Promise((resolve, reject) =>
  wx[name]({
   ...option,
   success: resolve,
   fail: reject,
  })
 )
}

const wxPro = new Proxy(wx, {
 get(target, prop) {
  return promisify(prop)
 }
})

export default wxPro

2.使用regeneratorRuntime让小程序兼容async函数

在github项目regenerator里下载packages/regenerator-runtime/runtime.js。

如果是最新版本的话引入后会报一个错误:

Function is not a function....

需要手动修改源码:

去掉源码最后的try-catch语句,并将开头的var runtime改成var regeneratorRuntime。

如果不想修改则可以直接下载0.13.1版本的源码。

最后

在想使用的页面里引入:

import wxPro from './utils/wxPromise.js'
import regeneratorRuntime from './utils/runtime.js'

//app.js
App({
 async onLaunch() {
  // wxPro.login().then((res) => {
  //  console.log(res)
  // })
  const result = await wxPro.login()
  console.log(result)
 },
 globalData: {
  userInfo: null
 }
})

这样就可以了,唯一有点麻烦的是每个要用的页面都要引入一次。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
[JS源码]超长文章自动分页(客户端版)
Jan 09 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
Jun 25 Javascript
JS短路原理的应用示例 精简代码的途径
Dec 13 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
Feb 04 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
Javascript函数式编程语言
Oct 11 Javascript
javascript字符串函数汇总
Dec 06 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
May 28 jQuery
webpack 开发和生产并行设置的方法
Nov 08 Javascript
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
使用apifm-wxapi模块中的问题及解决方法
Aug 05 #Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 #Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 #Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
Aug 05 #Javascript
JS 自执行函数原理及用法
Aug 05 #Javascript
jQuery提示框插件SweetAlert用法分析
Aug 05 #jQuery
Nuxt.js实战和配置详解
Aug 05 #Javascript
You might like
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
python实现目录树生成示例
2014/03/28 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
C语言面试题
2013/05/19 面试题
两道JAVA笔试题
2016/09/14 面试题
学生党员思想汇报范文
2014/01/09 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
CPU不支持Windows11系统怎么办
2021/11/21 数码科技