手记

async await vue

async/await 是 Vue.js 提供的一种语法糖,让异步代码看起来更简单易懂。它基于 Promise,可以让我们在组件中更方便地处理异步操作。

在 Vue.js 中,async/await 的语法糖可以让我们写出这样的代码:

methods: {
  async loadData() {
    const data = await response.json();
    return data;
  },
  async saveData(data) {
    const response = await fetch('/api/save-data', {
      method: 'POST',
      body: data,
      headers: {
        'Content-Type': 'application/json'
      }
    });
    return response.json();
  },
  async loadDataAsync() {
    const data = await response.json();
    return data;
  },
  async saveDataAsync(data) {
    const response = await fetch('/api/save-data', {
      method: 'POST',
      body: data,
      headers: {
        'Content-Type': 'application/json'
      }
    });
    return response.json();
  }
}

以上代码中,我们定义了两个方法 loadData()saveData()。在这些方法中,我们使用了 await 关键字来等待 Promise resolve。

loadData() 方法的 Promise 是从 response.json() 方法返回的。response.json() 方法返回一个 Promise,这个 Promise 会在后续的 await 语句中 resolving,并返回 Promise 所代表的响应数据。

saveData() 方法的 Promise 是从 fetch('/api/save-data', {... }) 方法返回的。fetch() 方法返回一个 Promise,这个 Promise 会在后续的 await 语句中 resolving,并返回 Promise 所代表的响应数据。

asyncawait 的组合中,我们还可以使用 await 关键字来等待 Promise resolve。例如:

methods: {
  async loadDataAsync() {
    const data = await response.json();
    return data;
  },
  async saveDataAsync(data) {
    const response = await fetch('/api/save-data', {
      method: 'POST',
      body: data,
      headers: {
        'Content-Type': 'application/json'
      }
    });
    return response.json();
  },
  async loadData() {
    const data = await response.json();
    return data;
  },
  async saveData(data) {
    const response = await fetch('/api/save-data', {
      method: 'POST',
      body: data,
      headers: {
        'Content-Type': 'application/json'
      }
    });
    return response.json();
  }
}

以上代码中,我们定义了 async loadDataAsync()async saveDataAsync() 方法来使用 async/await。这些方法的 Promise 是由 fetch() 方法返回的,而不是由原生 JavaScript 的 Promise 返回的。

0人推荐
随时随地看视频
慕课网APP