【问题标题】:Why is my fetch response showing a promise even after reading the response stream?为什么即使在读取响应流之后,我的 fetch 响应仍显示承诺?
【发布时间】:2021-02-06 17:27:21
【问题描述】:

我正在调用一个 API,它返回一个我需要访问的主体。通过 Postman 调用 API 按预期工作。 JavaScript 代码如下:

async function checkIfCheater(nameToCheck) {
    let testJson = {
        "GameName" : nameToCheck
    }

    await fetch(apiGatewayCheckCheaterLocal, {
        method: 'POST',
        mode: 'cors',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(testJson)
    }).then(response=>response.json()).then(data=>{ return data; });
}

我尝试过以多种方式访问​​响应。此处的示例遵循the accepted answer here。但是,尽管如此,返回的值仍然是我无法访问其主体的Promise {<pending>} 对象。

为什么我的对象仍然是一个承诺,尽管遵循该链接上的答案,我该如何解决它?

【问题讨论】:

  • checkIfCheater() 不返回任何内容。

标签: javascript fetch


【解决方案1】:

修改如下,

async function checkIfCheater(nameToCheck) {
    let testJson = {
        "GameName": nameToCheck
    };

    const res = await fetch(apiGatewayCheckCheaterLocal, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(testJson)
    });

    const data = await res.json();

    return data;
}

checkIfCheater('name').then(data => console.log(data));

【讨论】:

  • 我在日志中根本看不到任何内容,甚至没有一个空条目。
  • @AugustWilliams 请检查您的 API apiGatewayCheckCheaterLocal 应该有什么。
  • API(AWS API 网关)显示预期的日志输出。如果我使用 Postman 调用 API,则输出相同。
  • @AugustWilliams 尝试删除 mode: 'cors',
  • 与以前相同的问题。 API 日志看起来不错,但 data 未定义,在控制台中仍然看不到任何内容。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 2019-07-20
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多