如果取消提交尚未解决一段时间后,我想向用户显示超时错误. 我已经看到了一些在这里添加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))) } }