关于react-native fetch 超时处理怎么做?



  • 关于react-native fetch 超时处理怎么做?



  • 我也想知道



  • 目前貌似只能做个请求超时,https://github.com/github/fetch/issues/175



  • 自己重新封装一下fetch,原理就是写个setTimeout,然后时间到了触发Promise的reject

    const oldfetch = fetch;
    fetch = function(input, opts) {
        return new Promise((resolve, reject) => {
            setTimeout(reject, opts.deadline);
            oldfetch(input, opts).then(resolve, reject);
        });
    }
    

    https://github.com/whatwg/fetch/issues/20#issuecomment-135426968



  • @FB 你这代码只适合get请求,post请求还需要重新封装啊



  • @liz
    代码仅供参考,上边也说了原理,所以无论是GET还是POST,只要是使用fetch进行段操作都可以设置一个timmer进行触发reject(因为Promise只触发一次rej || res,所以超时过后resolve就不需要等待了

    比如POST操作可以这么:

    const FETCH = (opt) => {
        return new Promise((res, rej) => {
            fetch(opt).then(res).catch(rej);
            setTimeout(rej, 5000);
        })
    }
    

登录后回复