</p>

RN的fetch方法默认是没有超时控制的, 但我们可以参考下列代码实现超时控制:

let oldFetchfn = fetch; //拦截原始的fetch方法

const timeout = 5000;// 5秒请求超时
function _fetch(input, opts) {//定义新的fetch方法,封装原有的fetch方法, 支持超时
    let fetchPromise = oldFetchfn(input, opts);

if(opts.timeout === undefined) {
opts.timeout = timeout;
}

let timeoutPromise = new Promise(function(resolve, reject){
setTimeout(()=>{
console.log("HTTPBase._fetch() 请求超时!");
reject({'code': '408', 'msg': '网络请求超时'});
}, opts.timeout)
});

return Promise.race([fetchPromise, timeoutPromise]);
};

参考资料: 
http://www.cnblogs.com/wonyun/p/fetch_polyfill_timeout_jsonp_cookie_progress.html
https://github.com/whatwg/fetch/issues/20


</p> </p>

</body></html>

转载请注明:WebLogic Android 博客 » React Native fetch 增加超时控制