React Native Fetch请求设置超时

本文介绍了如何在React Native中解决fetch请求超时问题。通过利用Promise.race方法,结合正常的网络请求任务和模拟的超时任务,实现自定义超时功能。当网络请求在设定时间内未完成,超时任务将强制中断请求,提供更好的用户体验。
摘要由CSDN通过智能技术生成

本文在简书同步更新:https://www.jianshu.com/p/2df7c6e3b3c3

React Native的fetch请求本身自带的超时时间比较长,也不能自定义超时时间,除非修改源码(Android底层是由OkHttp实现)。在实际的App网络连接当中,用户是接受不了那么长的网络超时的,所以我们得自己封装一个。在这里我们可以合理使用Promise来解决这个问题。

一、Promise是什么

所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。(该段话摘自阮一峰老师的ES6入门教程http://es6.ruanyifeng.com/#docs/promise)

Promise对象有个race方法,可以满足我们的需求。Promise.race()方法接受一个Promise数组,数组里面的每个Promise都可以在里面同时运行,只要其中一个运行结束或者抛出错误,那么Promise.race便会完成。

二、实现思路

根据Promise.race的特性,我们在Promise.race里面添加两个任务,一个是正常的网络请求任务A,另外一个便是网络延时任务B,网络延时可以利用setTimeout方法实现。
这个时候会有三种情况出现:
1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值