【发布时间】:2019-01-10 01:44:44
【问题描述】:
我有一个方法向 API 发出两个 http 请求以获取数据。
getServerDetails(this.props.match.params.id) //1
.then(res => {
this.props.getServerDetailsAction({ success: true, data: res.data })
if (!_.isEmpty(res.data)) {
return getServerScomAlerts(res.data.ServerName) //2
}
})
.catch((err) => { //3
this.props.getServerDetailsAction({ success: false, error: err })
})
.then(res => {
if (!_.isEmpty(res)) {
this.props.getServerScomAlertsAction({ success: true, data: res.data })
}
})
.catch((err) => { //4
this.props.getServerScomAlertsAction({ success: false, error: err })
})
getServerDetails (1) 和 getServerScomAlerts (2) 方法正在返回承诺。 getServerScomAlerts (2) 依赖于getServerDetails (1) 的结果
问题是如果getServerScomAlerts (2) 发生错误,第一个catch 块(3) 会被执行。有没有办法从第一种方法(1)(无需访问商店)获取数据,同时跳转到相应的catch块(4) if发生错误?
【问题讨论】:
-
您可以考虑将
async/await与传统的try {} catch {}块一起使用,以便对此进行更多控制。
标签: javascript reactjs redux promise