等待调用异步函数时返回未定义?

时间:2018-08-28 16:31:30

标签: javascript typescript async-await

因此,在main.ts中,我试图调用类方法processResponse以从处理程序中获取数据,但它总是返回custObject且未定义,甚至不进入processResponse函数,这是什么?在下面的代码中实现错误?

main.ts

private async custResponse(data: any): Promise < any > {
    const custObject = await RequestResponseHandler.processResponse(data);
    return custObject;
}

handler.ts

public static async processResponse(data: any): Promise<any> {
    let response: any = {};
    console.log("Data>>..>>>>", data); // undefined
    try {
        if (data.Header.StatusCode === "0000") {
            response = data.Details;
            const tokenId = await this.cacheResponse(response);
            response.Header.tokenID = tokenId;
            return response;
        }
    } catch (err) {
            return data;
    }

}

1 个答案:

答案 0 :(得分:1)

由于您的console.log("Data>>..>>>>", data);undefined,这意味着问题在上游。您没有将data参数中的任何内容传递给此方法。尝试检查您要在哪里调用custResponse方法,并查看是否实际传递了数据(可能不是)。

对于未定义的返回,在状态代码不正确的情况下,在您的代码中不返回任何内容(在try块中)。尝试在结尾处放些回报。

public static async processResponse(data: any): Promise<any> {
    //....
    //try catch stuff...
    //....
    return data //or something else

}