vue3 await

在 JavaScript 中,await一个用于处理异步操作的关键字。它只能在 async 函数内部使用,并且用于等待一个 Promise 对象的解析。在 Vue 3 中,await 关键字常用于在组合式 API 的 setup 函数中处理异步操作,比如数据获取

使用 await 的示例

以下是一个使用 await 关键字的简单示例,它在组件挂载时从一个 API 获取数据:

<template>
  <div>
    <p v-if="loading">加载中...</p>
    <p v-else>{{ data }}</p>
  </div>
</template>

<script>
import { ref, onMounted } from 'vue';

export default {
  setup() {
    const data = ref(null);
    const loading = ref(true);

    const fetchData = async () => {
      try {
        const response = await fetch('https://api.example.com/data'); // 发送异步请求
        const result = await response.json(); // 等待响应并解析为 JSON
        data.value = result; // 更新响应式数据
      } catch (error) {
        console.error('数据获取失败:', error);
      } finally {
        loading.value = false; // 请求完成后设置加载状态
      }
    };

    onMounted(() => {
      fetchData(); // 组件挂载时调用 fetchData 函数
    });

    return {
      data,
      loading,
    };
  },
};
</script>

<style>
/* 在这里添加你的样式 */
</style>

解释

  1. 响应式数据:

    • dataloading 都是通过 ref 创建的响应式引用。data 用于存储从 API 获取的数据,loading 用于表示加载状态。
  2. fetchData 异步函数:

    • fetchData一个异步函数,使用 async 关键字定义。
    • await fetch('https://api.example.com/data') 发送一个异步请求并等待响应。
    • await response.json() 等待响应解析为 JSON 格式。
    • 如果请求成功,将结果赋值给 data.value
    • try...catch 块中捕获和处理任何可能的错误
    • 最后,无论请求是否成功,都将 loading.value 设置为 false
  3. 生命周期钩子 (onMounted):

    • onMounted 钩子中调用 fetchData 函数,这样当组件挂载时会立即发送请求。
  4. 模板 (Template):

    • 使用条件渲染 (v-ifv-else) 根据 loading 状态显示加载信息或数据。

通过这种方式,await 关键字可以简化异步操作的处理,使代码更易读且逻辑更清晰。

相关文章

这篇文章我们将通过debug源码的方式来带你搞清楚defineAsync...
欧阳老老实实的更新自己的高质量vue源码文章,还被某2.6k st...
前言 在Vue3.5版本中响应式 Props 解构终于正式转正了,这个...
组合式 (Composition) API 的一大特点是“非常灵活”,但也因...
相信你最近应该看到了不少介绍Vue Vine的文章,这篇文章我们...
前言 在欧阳的上一篇 这应该是全网最详细的Vue3.5版本解读文...