reactjs – 如何将setTimeout添加到使用redux的获取承诺?
发布时间:2020-12-15 09:34:03 所属栏目:百科 来源:网络整理
导读:如果取消提交尚未解决一段时间后,我想向用户显示超时错误. 我已经看到了一些在这里添加setTimeout来获取的好例子: https://github.com/github/fetch/issues/175 但是,如何处理同时使用redux的获取承诺?例如. export function getData() { return (dispatch
如果取消提交尚未解决一段时间后,我想向用户显示超时错误.
我已经看到了一些在这里添加setTimeout来获取的好例子: 但是,如何处理同时使用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))) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |