zoukankan      html  css  js  c++  java
  • async和await在项目中的应用

    Async基础知识:

    • async函数是ES7标准引入的语法,基于Generator函数实现的,也就是说是Generator函数的语法糖。什么是Generator函数?(留个坑)
    • 返回值是Promise,可以使用then方法来指定下一步操作
    • 使用asyn关键字表明函数是一个async函数,内部使用await关键字表明需要等待异步任务结束后才继续往下执行
    • 参考资料:http://es6.ruanyifeng.com/#docs/async

    为了实践async和await,我把现在在做的vue电商项目中的异步请求函数都换成了async和await方式。

    1.分类页,获取分类数据

    原来的代码:

    vue created

    created() {
      this.$ajax.get('http://localhost:3000/category/').then((res) => {
        const data = res.data // 成功拿到数据
       // 操作省略 }).
    catch(function (error) { console.log(error) }) },

    效果图:

    现在,改成async和await

    首先,在vue methods里定义一个async方法

    methods: {
      async getCategory() {
        let res = await this.$ajax.get('http://localhost:3000/category/')
        if (res.status === 200) {
          return res.data // 成功拿到数据
        }
      },
    }

    然后呢,在vue created里调用

    created() {
      this.getCategory().then(res => {
        const data = res // 成功拿到数据
      // 操作省略 })
    .catch(function (error) {
        console.log(error)
      })
    },

    这样把代码流程改成了同步形式。测试了下,效果一样。

    2.商品列表页,获取商品数据

    效果图:

    原来的代码,vue created:

    created() {
      this.cat_id = this.$route.query.catId
      this.$ajax.get('http://localhost:3000/items', {
        params: {
          catId: this.cat_id
        }
      }).then((res) => {
        console.log(res.data)
      }).catch((error) => {
        console.log(error)
      })
    },

    改用async:

    vue methods里:

    methods: {
      async getItems(catId) {
        let res = await this.$ajax.get('http://localhost:3000/items', {
          params: {
            catId: catId
          }
        })
        if (res.status === 200) {
          return res.data
        }
      },
    }

    vue created:

    created() {
      this.cat_id = this.$route.query.catId
      this.getItems(this.cat_id).then(res => {
        this.goodsData = res
      }).catch(function (error) {
        console.log(error)
      })
    },

    完成,效果一致。

    我写技术博客的目的主要是整理自己做过的功能,主要是写给自己看,当然,我尽量写清楚。

    若给你造成误解,我很抱歉。若给你带来帮助, 我很欣慰。

    有疑问欢迎交流 扣扣:2136946914

  • 相关阅读:
    android activity声明周期学习笔记
    java笔记之static&final&abstract
    Android 动画分析学习笔记
    43:数据分类
    42:换汽水瓶ExchangeBottle
    41:简单密码
    40: Redraiment的走法(不连续最长子字符串)
    函数返回值是引用(引用当左值)
    引用的本质
    C语言实现计算字符串中最后一个单词长度,单词以空格隔开
  • 原文地址:https://www.cnblogs.com/cathy1024/p/10281247.html
Copyright © 2011-2022 走看看