如果取消提交尚未解决一段时间后,我想向用户显示超时错误. 我已经看到了一些在这里添加setTimeout来获取的好例子: https://github.com/github/fetch/issues/175 但是,如何处理同时使用redux的获取
我已经看到了一些在这里添加setTimeout来获取的好例子:
https://github.com/github/fetch/issues/175
但是,如何处理同时使用redux的获取承诺?例如.
export function getData() {
return (dispatch, getState) => {
fetch('blah.com/data')
.then(response => response.json())
.then(json => dispatch(getDataSuccess(json)))
.catch(
error => {
console.log(error)
}
)
dispatch({
type: DATA_FETCH_REQUEST
})
}
}
谢谢阅读!
我一直渴望有一个使用Promise.race的理由,它适用于这个用例. Promise.race等待第一次解决或第一次拒绝.因此,如果拒绝先开火,那么它永远不会在Promise.race上开火.更多这里 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race.抱歉,我没有机会测试代码.export function getData() {
return (dispatch, getState) => {
let timeout = new Promise((resolve, reject) => {
setTimeout(reject, 300, 'request timed out');
})
let fetch = new Promise((resolve, reject) => {
fetch('blah.com/data')
.then(response => response.json())
.then(json => resolve(json))
.catch(reject)
})
return Promise
.race([timeout, fetch])
.then(json => dispatch(getDataSuccess(json)))
.catch(err => dispatch(getDataTimeoutOrError(err)))
}
}
