对 API 的异步调用在不成功时不返回

React async call to API not returning when non successful

我使用 Amplify API 调用 API:

import { API } from 'aws-amplify'

await API.get('myapi', 'endpoint')
.then(data => {
    // Do something here
})

当我的 API returns 200 和一些数据返回时, then 主体执行成功。问题是,当端点 returns 404(或更好的非 200 响应)时,似乎 await API.get .... 没有返回,因此永远不会执行 then 主体。我可以在开发人员工具和网络选项卡中看到该调用确实返回了 404 错误,只是在 React 中它永远不会触发 then 正文。

这就是API returns:

return {
    'statusCode': 404,
    'headers': { 
        'Content-Type': 'application/json',
        'Access-Control-Allow-Headers' : 'Content-Type',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET'
    }
}

.then() 在请求成功时触发,.catch() 在请求被拒绝时触发。 从 'aws-amplify'

导入 { API }
await API.get('myapi', 'endpoint')
 .then(data => {
   // Do something here
 })
 .catch((err) => {
  console.log(err);
});

另外,我不认为将 await 与 .then() 一起使用是一种好的做法。 .then().catch() 和 async/await 是处理异步 executions.They 的两种流行方式,不应相互混合。 参考 link : https://www.geeksforgeeks.org/difference-between-promise-and-async-await-in-node-js/?ref=lbp