为什么我的承诺链没有解决?

Why is my promise chain not resolving?

我刚刚开始使用 promises。我在我的 VUE 组件中写了这个方法。调试它,api 肯定返回数据并到达注释行。

当函数 returns 它永远不会到达原始调用者 .then 方法。我设置的两个警报都不起作用。

我的 promise 链结构有误吗?

入口函数

mounted() {
        PersonApi.Get(this.personId).then((response) => {
            alert('done');
            this.person = response;
            this.loading = false;
        }).catch((error) => {
            alert(error);
        });
    }

调用的图书馆

import axios from 'axios'

export default class PersonApi {
    private static ResolveApiResponse(response: any): Promise<any> {
        return new Promise((resolve) => {
            if (response.errors != undefined && response.errors.length > 0) {
                return Promise.reject(response.errors);
            }

            return Promise.resolve(response.Data); // code is getting to this line
        });
    }

    public static Get(id: number): Promise<any> {
        return axios.get('/api/Person/' + id)
            .then((response: any) => {
                return PersonApi.ResolveApiResponse(response.data);
            }).catch((error: any) => {
                return Promise.reject(error);
            });
    }
}

固定码

更新到这里

private static ResolveApiResponse(response: any): Promise<any> {
        return new Promise((resolve, reject) => {
            if (response.errors != undefined && response.errors.length > 0) {
                resolve(response.errors);
            }

            resolve(response.Data);
        });
    }

当解析一个 promise 时,你应该调用传递的 resolv 函数对象,而不是使用 Promise.resolve 函数

来创建一个新的 promise
new Promise((resolv, reject) => {
    resolve('hello world'); // Resolv the promise
    Promise.resolve('Hello World'); // This makes a new promise that is directly resolved
})

通常,Promise.resolve 只应在 api 内使用,您想要 return 预缓存,或 return 模拟计算。