微信小程序------------黑马优购 async和await 使用

小程序中使用es7语法 async (es7的 async 号称是解决回调的最终⽅案)是会报错的,需要进行如下配置:

  1. 在⼩程序的开发⼯具中,勾选 es6转es5语法
  2. 下载 facebook的regenerator库中的 regenerator/packages/regenerator-runtime/runtime.js
  3. 在⼩程序⽬录下新建⽂件夹 lib/runtime/runtime.js ,将代码拷⻉进去
  4. 在每⼀个需要使⽤async语法的⻚⾯js⽂件中,都引⼊(不能全局引⼊)
  import regeneratorRuntime from '../../lib/runtime/runtime';

注意即使是按照上述步骤都整好,也会在某些旧的机型或者旧的小程序中报错,不适配,当要适配旧的手机等等,就需要重新改成 es6的promise.

目前暂时不考虑适配

按照上述步骤建好文件,然后是分类功能需要使用这项技术,因此只需要在分类的js文件中引入。

直接改造getCates 函数:
原来的getCates函数如下:

getCates() {
    request({ url: '/categories' })
      .then(res => {
         this.Cates = res.data.message;
         const obj = {time:Date.now(),data:this.Cates}
         console.log(obj);
        wx.setStorageSync('cates',obj);
        // 构造左侧的大菜单数据
         let leftMenuList = this.Cates.map(v=>v.cat_name);
        // 构造右侧的商品数据
         let rightContent = this.Cates[0].children;
         this.setData({
          leftMenuList,
          rightContent
        })
      })
  }

改造之后

async getCates() {
     //  1.使用es7的async await来发送请求
    const res = await request({ url: '/categories' });
    // 这里请求没有回来是不会继续往下执行的

    this.Cates = res.data.message;
    const obj = { time: Date.now(), data: this.Cates }
    wx.setStorageSync('cates', obj);
    // 构造左侧的大菜单数据
    let leftMenuList = this.Cates.map(v => v.cat_name);
    // 构造右侧的商品数据
    let rightContent = this.Cates[0].children;
    this.setData({
      leftMenuList,
      rightContent
    }) 
  },

ES6 Promise用法讲解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值