1. 直接使用 async , await 会报错 regeneratorRuntime is not defined
  2. 下载第三方npm包 regenerator-runtime 下载地址
  3. 下载文件中的regenerator-runtime文件夹拿出来,放到小程序代码中去,一般是放在utils文件夹
  4. 查看下面示例 async应用
//index.js
const regeneratorRuntime =require('../../utils/regenerator-runtime/runtime.js')
Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/async MyAsync(){return 'this is async function'},onLoad: function (options) {this.MyAsync().then((res)=>{console.log('1111'+res)})}
})
  1. 控制台输出结果如图, async 函数返回的是一个 Promise 对象 , async 函数(包含函数语句、函数表达式、Lambda 表达式)会返回一个 Promise 对象,如果在函数中 return 一个直接量,async 会把这个直接量通过Promise.resolve() 封装成 Promise 对象。async 函数 在没有 await 的情况下执行async函数,它会立即执行,并且返回一个 promise 对象,并且绝不会阻塞后面的语句
  2. await 作用 表达式会暂停当前 async function 的执行,等待 Promise 处理完成若 Promise 正常处理,其处理结果作为 await 表达式的值,继续执行 async function 。若 Promise 处理异常 (rejected) , await 表达式会把 Promise 的异常原因抛出。另外,如果 await 操作符号的表达式的值不是一个 Promise ,那么该值将被转换为一个正常处理的 Promise 。
  3. async / await 的优势在于处理then链 ,查看下面示例
 //index.jsconst regeneratorRuntime =require('../../utils/regenerator-runtime/runtime.js') Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/getOneMes() {console.log('getOneMes one')return new Promise((resolve, reject) => {wx.request({url: 'http://suggest.taobao.com/sug?code=utf-8&q=衣服&callback=cb',method: 'GET',dataType: 'json',success: function (res) {console.log('one:')resolve(res)},})})},getTwoMes() {console.log('getOneMes two')return new Promise((resolve, reject) => {wx.request({url: 'http://suggest.taobao.com/sug?code=utf-8&q=帽子&callback=cb',method: 'GET',dataType: 'json',success: function (res) {console.log('two:')resolve(res)},})})},getThreeMes() {console.log('getOneMes three')return new Promise((resolve, reject) => {wx.request({url: 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb',method: 'GET',dataType: 'json',success: function (res) {console.log('three:')resolve(res)},})})},async MyAsync(){let one =await this.getOneMes()console.log(one)let two = await this.getTwoMes()console.log(two)let three = await this.getThreeMes()console.log(three)},onLoad: function (options) {this.MyAsync().then(()=>{console.log('MyAsync')})},})
  1. 输出结果异步变同步如图结果:先执行的one,等one完全执行结束 然后是two,最后是three

    本文内容借鉴er_ba的博客,推荐一下,大家相互学习

微信小程序使用 async , await相关推荐

  1. 微信小程序之async/await

    出现问题:  新版本的微信小程序开发工具中不再拥有增强编译这一选项,这样导致在需要用到async/await的时候,出现报红. 先看一下新版本微信开发工具的本地设置 根据官方文档,表示只要勾选将JS编 ...

  2. 微信小程序使用promise 一次封装全部接口

    /*** Promise化小程序接口*/ class Wechat {static api(name, opts) {return new Promise((success, fail) => ...

  3. async await 处理异步变同步(微信小程序内举例)

    1.async起什么作用?   输出的是一个Promise对象 注: 1)async函数返回的是一个Promise对象.Async函数(包含函数语句.函数表达式.Lambda表达式)会返回一个Prom ...

  4. 微信小程序 async await解决异步问题

    小程序大部分函数和数据库操作都是异步执行的,如果希望同步执行,需要用到async 和await这对基友,必须成对出现. 为了快速验证 async/await 可用,在 App.js 的 onLaunc ...

  5. 微信小程序如何使用async和await

    微信小程序如何使用async和await 首先微信小程序不支持ES7的语法,在新版的小程序开发工具中你需要勾选增强编译选项才可以使用. 我想到的是直接在方法前面加一个async,然后await接受参数 ...

  6. 微信小程序中使用async/await

    在之前写了微信小程序中如何使用promise,其实使用promise的最终目的是要能使用async/await. 同时要使用async/await也必须在promise的基础之上. 1.下载regen ...

  7. 在微信小程序中使用 async/await

    微信小程序中有大量接口是异步调用,比如 wx.login() . wx.request() . wx.getUserInfo() 等,都是使用一个对象作为参数,并定义了 success() . fai ...

  8. 微信小程序 - 富文本图片宽度自适应(正则)

    引言:在微信小程序里,比如商品展示页面的商品详情会有图片展示,PC端设置的商品详情是PC端的宽度,所以在小程序里图片会显示不全,这时就应该做相应的处理,使小程序里图片显示正确 思路 把图片的宽度改为手 ...

  9. 微信小程序项目重构之Redux状态管理

    1.以往处理状态的一些方式 第一种:App上挂globalData 这种方式就是直接写在App里面啦,取值赋值比较方便 App.js App({globalData: {name: '前端学者',// ...

最新文章

  1. [精]Odoo 8.0深入浅出开发教程-模块开发基础
  2. 一键移植工具_【产品推广】让UI设计畅通无阻 — 信息系统人机界面增强工具(HFE Designer)...
  3. 可微偏导数一定存在_【导数压轴题】“偏导数”与含参不等式
  4. javascript中错误使用var造成undefined
  5. 产品经理其实是一种能力,而非职业
  6. Collections.toArray方法使用的坑
  7. ASP.NET 2.0与SQL Express 2005在迁移到Windows 2003时发生数据库为只读的错误
  8. C#与halcon联合开发——内存溢出
  9. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...
  10. 算法优化策略之“中途相遇”算法思想
  11. yii2 中 controller 向layout 传值
  12. app.honeycomb.Shell$HomeActivity failed to start
  13. 曲线运动与万有引力公式_【知识总结】物理必修二曲线运动与万有引力相关公式和规律...
  14. perl 模块下载安装
  15. topojson转换与应用
  16. shell子串截取的三种用法:
  17. 认知科学和认知神经科学_设计师认知科学阅读清单
  18. 桌面打开计算机没反应,点击显示桌面没反应? 显示桌面没反应解决方法
  19. 波导Z769手机java下载_手机指令秘籍传授
  20. excel 删除多余回车

热门文章

  1. 题解:链表所不具备的特点链表的内存单元地址——选择题
  2. 山西移动UNT402H_hi3798mv310_MT7661RSN(2+8)_卡刷固件
  3. Chrome播放rtsp_支持H.265
  4. 第二届牡丹文化艺术节暨“当汉服遇上牡丹”开园仪式正式启动
  5. 关于永中Office(永中办公软件)不认Windows系统安装的字体的解决办法
  6. 18 - JavaScript 包装类
  7. CiteSpace入门教程—下载安装使用指南
  8. 区块链100篇之哈希算法
  9. shell中单引号,双引号,反引号,不用引号的使用区别
  10. Variational AutoEncoder(VAE)变分自编码器