黑马程序员技术交流社区

标题: 【上海校区】微信小程序使用async/await函数进行异步编程 [打印本页]

作者: 不二晨    时间: 2018-12-28 11:30
标题: 【上海校区】微信小程序使用async/await函数进行异步编程
早些时候,研究了一下前端异步编程,想着使用async/await函数编写异步代码,简直爽的不要不要的,而我本身是做小程序开发的,所有自然希望能够让async/await函数在小程序中大展拳脚了,这里就简单介绍一下如何在微信小程序中使用async/await函数来编写异步代码。

微信小程序本身支持es6的语法,并且可以开启Babel将es6转为es5。但是即使开启了语法编译,在你使用async函数时,还是会报如下错误:

regeneratorRuntime is not defined;at pages/index/index page lifeCycleMethod onLoad function
ReferenceError: regeneratorRuntime is not defined

我们知道babel在编译时,并不是支持所有的es6语法的,所以需要一些插件来对babel进行扩展,而这个regeneratorRuntime他其实就是一个对Generator、async函数提供的一种语法支持的插件。既然它提示regeneratorRuntime没有定义,那么我们就可以手动从npm下载regenerator-runtime这个包。然后,我们再将下载好的包丢到我们的小程序中的,然后在每个需要使用async函数的地方,使用以下代码:

// 以下是es6的模块化写法,你也可以使用require,一样的。注意路径和js文件,不要引用错了。
import regeneratorRuntime from '/utils/regenerator-runtime/runtime-module.js';
如果你嫌弃写这么长,你可以定义一个vendor.js功能js文件,然后在这个文件中暴露regeneratorRuntime模块,然后每次都这样引用即可:

import { regeneratorRuntime } from '/utils/vendor.js';
但是,不管怎么样,你都需要在使用async函数的地方引入他,并且,命名必须是regeneratorRuntime,不要搞错了。

如果你嫌弃每次写个项目都要复制一份regeneratorRuntime模块,那第二个方法那就是使用微信小程序新增的npm功能那么直接把包下载下来然后构建一下就可以直接用,而且,路径都不需要找了,直接和node中使用模块一样的使用方式。怎么用呢?这个......好像又要花篇幅来介绍怎么使用微信小程序的npm了。
---------------------
转载,仅作分享,侵删
作者:qq_33024515
原文:https://blog.csdn.net/qq_33024515/article/details/85164159



作者: 不二晨    时间: 2019-1-3 10:22
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2