微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 关键字可以简化异步操作的处理,使代码更易读且逻辑更清晰。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐