需要在文件引入regenerator-runtime (地址:https://github.com/facebook/regenerator, 下载本地引入即可)
【更新说明】
经过微信开发者工具的不断升级,它的“ES6转ES5”的功能也渐渐有了加强,所以要用async/await的话,已经不需要如本文中描述的使用额外的gulp和babel来自己做预编译工作,只需要引入regenerator runtime就可以了。
Promise和co都搞过了,终于还是忍不住要折腾,上ES7的终极方案:async/await。
async/await也是和Promise配合使用的, 先来看一下示例代码,这个用法和我们之前讲的co的用法是极其相似的:
function myAsyncFunc() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("myAsyncFunction done!");
resolve({data: "Hello,World"});
}, 5000);
});
}
async function test() {
var result = await myAsyncFunc();
console.log(result.data); //Hello,World
}
test();
要在小程序中使用async/await的话,靠微信web开发者工具中的Babel转换工具是不够的了,因为需要一些额外的Babel插件来编译使用了async/await的代码。所以这次我们得自己写脚本来调用Babel。
在项目中,我们得先关闭“开启ES6转ES5”这个选项,因为我们现在要自己来做这件事情。
好了,这是我们编译我们的代码所要做的工作。接下来,我们讲一下在小程序代码中要做的一些改动:
2.引入代码
在需要使用async/await特性的代码文件中,引入regenerator库:
const regeneratorRuntime = require('../../libs/regenerator-runtime')
然后,你就可以放心的在你的代码里使用async/await来写异步处理了。
作者:一斤代码
转自链接:https://www.jianshu.com/p/270f129e5af3