after amount of seconds if fetch promise has not been resolved want show timeout error user.
i've seen examples of adding settimeout fetch here: https://github.com/github/fetch/issues/175
but how can handle timing out fetch promise uses redux? e.g.
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 }) } }
thanks reading!
i've been dying have reason use promise.race, works use case. promise.race waits first resolve or first reject. if reject fires first never fire then
on promise.race. more here https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/promise/race. sorry, didn't chance test code.
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))) } }
Comments
Post a Comment