本文在简书同步更新: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