位置: 编程技术 - 正文

react-native fetch的具体使用方法

编辑:rootadmin

推荐整理分享react-native fetch的具体使用方法,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用。

在 AJAX 时代,进行请求 API 等网络请求都是通过 XMLHttpRequest 或者封装后的框架进行网络请求。

现在产生的 fetch 框架简直就是为了提供更加强大、高效的网络请求而生,虽然在目前会有一点浏览器兼容的问题,但是当我们进行 Hybrid App 开发的时候,如我之前介绍的Ionic 和React Native,都可以使用 fetch 进行完美的网络请求。

fetch 初体验

在 Chrome 浏览器中已经全局支持了 fetch 函数,打开调试工具,在 Console 中可以进行初体验。先不考虑跨域请求的使用方法,我们先请求同域的资源,如在我的博客页面中,打开 Console 进行如下请求。

返回的数据:

这样就很快速地完成了一次网络请求,我们发现返回的数据也比之前的 XMLHttpRequest 丰富、易用的多。

关于 fetch 标准概览

虽然 fetch 还不是作为一个稳定的标准发布,但是在其一直迭代更新的 标准描述 中,我们发现已经包含了很多的好东西。

fetch 支持了大部分常用的 HTTP 的请求以及和 HTTP 标准的兼容,如 HTTP Method,HTTP Headers,Request,Response。

fetch 的使用

react-native fetch的具体使用方法

fetch的入口函数定义在node_modules/whatwg-fetch.js文件中,如下

该函数在Network/fetch.js中被导出,最终在initializeCore.js中被注册为global的属性变为全局函数。fetch返回的是一个Promise。

跟随方法走向,依次调用的是XMLHttpRequest.js的send -> RCTNetworking.ios.js的sendRequest -> 最终调到原生端RCTNetworking.mm的sendRequest方法。

相关问题点:

1、为何fetch函数无法设置timeout?

为了设置fetch的timeout,我会如下定义一个函数

然后如下调用

先定义一个Promise,其在超时时间结束后reject。将这个Promise和fetch合并到Promise.race中,则一旦这两个请求谁先执行,另外一个会被舍弃。这样完成超时时间的设置。

但是查看源码发现oc中是有超时时间设置这个选项的,且js和oc通信时也传了这个参数,问题是出在入口函数fetch处,只需要在上面fetch方法中添加上如下

就可以在请求参数中设置超时时间了,如

2、fetch函数为何无法cancel?

fetch在原生端是NSURLSessionDataTask发的请求,这个是可取消的。在js端的XMLHttpRequest.js中也发现了abort方法,调用能够取消当前网络请求。问题出在了fetch的接口函数。

首先,要想请求能够取消,得拿到当前请求对应的requestId。请求的执行顺序是js端发起 -> OC生成Request,得到requestId,利用NSURLSessionDataTask发起请求 -> 将requestId通过回调的形式传回给js端,js若想取消该请求,执行abort方法即可。

要想fetch函数能够执行cancel,只需该方法将XMLHttpRequest对象返回即可。但是那样,就不再是一个Promise了。也可以将cancel方法绑定到返回的Promise对象上,修改方法如下

如此,调用的时候就比较恶习了,要如下

不能fecth().then().then()的模式调用,因为这样会导致返回的那个Promise不再是上面绑定了cancel的那个Promise。

标签: react-native fetch的具体使用方法

本文链接地址:https://www.jiuchutong.com/biancheng/369700.html 转载请保留说明!

上一篇:微信小程序顶部可滚动导航效果(微信小程序顶部导航栏怎么做)

下一篇:bootstrap Table的一些小操作(bootstraptable教程)

  • 增值税进项税额加计抵减会计处理
  • 缴纳上月附加税会计科目
  • 小规模报企业所得税吗
  • 个税申报没填过租房信息,却有怎么回事
  • 个人与公司交的税怎么算
  • 怎么知道购货方电话号码
  • 政府补贴什么时候确认收入
  • 支付给个人的佣金怎么做账务处理
  • 跨年发票是否可以报销 审计
  • 无形资产摊销以前年度摊多了
  • 黄金珠宝加工怎么样
  • 员工垫付公司费用法规
  • 财务收入支出明细表模板
  • 购进材料无发票会计分录
  • 无形资产的加计扣除为什么不影响应纳税所得额
  • 农业水费管理使用办法
  • 出口发票税率开错了怎么办
  • 土地增值税清算利息扣除规定
  • 增值税专用发票抵扣期限
  • 小微企业减免所得税
  • 拿提成的工资怎么算
  • 医疗服务免税发票怎么开
  • 收支两条线是指
  • 增值税发票的作用
  • 预计负债的计量,如何确定最佳估计数
  • 应收账款怎么做分录
  • 分配利润的会计科目
  • 境外所得税抵免汇率
  • mpd linux
  • 洛阿雷城堡,西班牙韦斯卡 (© Sebastian Wasek/Alamy)
  • 增值税发票开错了可以退吗
  • DeepLabV3+:Mobilenetv2的改进以及浅层特征和深层特征的融合
  • 支付给个人的劳务报酬代扣个税
  • yolo v5超详细解析
  • RTX 4090深度学习性能实测奉上!模型训练可提升60~80%
  • 微信小程序游戏手游排行榜
  • 【深度学习】AI一键换天
  • 残疾人保证金如何做账
  • 城市维护建设税属于什么会计科目
  • python中numpy.empty()函数的用法
  • BootStrap--selectpicker的使用
  • 侵权赔偿补偿金如何计算
  • 个人社保交错了怎么办
  • 差旅费报销注意哪些问题
  • 使用SQL查询学生的姓名
  • 房屋建筑物固定资产标牌图片
  • 明细账分类账登记
  • 现金折扣和商业折扣怎么确定收入
  • 高价购买股权
  • 公司卖掉软件计提折旧吗
  • 如何做好现金流
  • sql server2005一个表中可以设置
  • sql server 2000安装好打开不显示名称和服务原因
  • MSSQL 2005/2008 日志压缩清理方法小结
  • sql server 3417错误
  • linux服务器怎么连接wifi
  • 开机时显示
  • 在windows xp中说法正确的是
  • 全球知名的中文搜索引擎
  • windows config文件
  • 画布canvas的基本步骤
  • perl读取文件内容到数组
  • Unity3D游戏开发基础
  • node.js连接不上数据库
  • activity的生命周期有哪些状态
  • unity转盘游戏
  • cocos2dx-3.2+lua 常用函数
  • javascript的基本数据
  • 【Rayeager PX2分享】OpenCV入门之线段检测
  • jquery里面的$是什么意思
  • Python运行报错此段代码无法访问
  • 江西国税局电子税务局
  • 中国进口国外品牌排行榜
  • 资源税选矿和原油的区别
  • 扣缴义务人怎么改不过来呢
  • 税务局怎么增加购票员
  • 福建省个人所得税申报系统
  • 甘肃税务局电子税务局官网电子发票怎么查询
  • 加强宣传的名言警句
  • 税务局宪法宣传日
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设