对 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
我使用 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