Axios +版本Js3:使用异步导出显示结果

bxgwgixi  于 2023-03-08  发布在  iOS
关注(0)|答案(1)|浏览(124)

我使用vue.js3与vite和axios。
我用这个函数定义了一个TS文件:

export async function findAllCompanies() {
    try {
        const {data, status} = await axios.get<CompanyPojoResponse>(
            'http://localhost:9050/api/v1/company/all',
            {
                headers: {
                    'Content-Type': 'application/json',
                    Authorization: 'Basic YWRtaW46YWRtaW5QYXNz',
                },
            },
        );

        console.log(JSON.stringify(data, null, 4));

        // ?? "response status is: 200"
        console.log('response status is: ', status);

        return data;
    } catch (error) {
        if (axios.isAxiosError(error)) {
            console.log('error message: ', error.message);
            console.log('error message: ', error);
            return error.message;
        } else {
            console.log('unexpected error: ', error);
            return 'An unexpected error occurred';
        }
    }
}

然后,我尝试在vue文件中显示它:

<script setup lang="ts">

import type {CompanyPojo} from "@/rest/restapi-companies";
import {findAllCompanies} from "@/rest/restapi-companies";

let companyResult = findAllCompanies()
console.log(companyResult)

</script>

<template>

  <div class="top-nav">
    <nav>
      <RouterLink to="/new-company">New Company</RouterLink>
      <!-- view product list -->
      <!-- create new product -->
    </nav>
  </div>

  <table id="companyTable">
    <thead>
    <tr>
      <th>JUST EVERYTHING....</th>
    </tr>
    </thead>
    <tbody>

    <tr v-for="company in companyResult">
      <td>{{ company }}</td>
    </tr>
    </tbody>
  </table>

</template>

我在日志中看到结果,但在尝试访问字段的页面(添加公司仅用于测试)中没有:{{company.name}} {{公司其他名称}}
只是导致错误,即CompanyPojoResponse没有这些字段。
我真的不明白,因为:

export type CompanyPojoResponse = {
    data: CompanyPojo[];
};

我认为我在这一点上循环数据,然后我在CompanyPojo-Objects上循环...

rqmkfv5c

rqmkfv5c1#

您的findAllCompanies()是一个异步函数,您没有等待承诺得到解决。
你可以这样做:

const companyResult = ref([]) // Initialize this as an empty array

onMounted(async () => {
  companyResult.value = await findAllCompanies()
})

相关问题