详解将微信小程序接口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 相关文章推荐
jQuery仿Excel表格编辑功能的实现代码
May 01 Javascript
jQuery中prepend()方法用法实例
Dec 25 Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
JQuery EasyUI的使用
Feb 24 Javascript
通过jquery实现页面的动画效果(实例代码)
Sep 18 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
Dec 22 Javascript
JQuery通过后台获取数据遍历到前台的方法
Aug 13 jQuery
vue2实现搜索结果中的搜索关键字高亮的代码
Aug 29 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
使用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
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
jQuery下的几个你可能没用过的功能
2010/08/29 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
vue+iview使用树形控件的具体使用
2020/11/02 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
django 自定义用户user模型的三种方法
2014/11/18 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
办公文员的工作岗位职责
2013/11/12 职场文书
力学专业毕业生自荐信
2013/11/17 职场文书
班主任寄语大全
2014/04/04 职场文书
五一活动标语
2014/06/30 职场文书
公司委托书怎么写
2014/08/02 职场文书
走群众路线剖析材料
2014/10/09 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
法律意见书范文
2015/06/04 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
Go获取两个时区的时间差
2022/04/20 Golang