位置: 编程技术 - 正文

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教程)

  • 计提坏账为什么是递延所得税资产
  • 个人独资企业和个体工商户的税收区别
  • 应交税费转营业外支出
  • 增值税发票综合服务平台错误代码35
  • 加计抵扣进项税额政策2022
  • 怎么做掉公司账户的钱
  • 主营业务成本的数据从哪里来的
  • 企业所得税季末从业人数怎么填
  • 季度企业所得税可以不预缴吗
  • 房地产企业还有未来吗
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 保险公司赔款可以用子女的二类卡吗
  • 加权平均净资产收益率反映什么
  • 两个其他应收款的区别
  • 印刷品生产需要生产许可证吗?
  • 转让专利技术使用权属于什么收入
  • 企业所得税月交还是年交
  • 技术开发费税收优惠政策
  • 一般纳税人注销公司需要什么资料和流程
  • 手撕税票去哪可以弄到
  • 2017年广告费税率
  • 汽车运输增值税专用发票多少税点
  • 外贸企业增值税发票需要认证吗
  • 制造费用如何分摊到产品的成本
  • 预计负债怎么计提递延所得税资产
  • 货款打多了退款怎么做账
  • win7 bootmode
  • windows10如何开启远程
  • 新固定资产的六大类型
  • 联想昭阳k41笔记本
  • 增值税出口退税为什么不属于政府补助
  • 没有抵扣的增值税怎么做账
  • 提前支付的费用记账
  • 所有者权益变动额怎么算
  • php数组函数 菜鸟
  • 解决口苦最快的方法
  • 192.168.2.1 路
  • codevein配置要求
  • 污水处理增值税税率
  • 机器学习中的数学原理——对数似然函数
  • fastjson 解析
  • pytorch torch
  • Ubuntu18.04配置允许远程访问
  • springboot -d
  • iotop命令 监视磁盘I/O状态
  • 自建房销售个人所得税如何计算
  • 税局代开专票已扣款还需季度增值税申报吗
  • 税务法新规
  • 购买的烟酒怎么入账
  • sql2008r2如何使用
  • 待处理流动资产损失属于什么科目
  • 企业计提固定资产折旧以什么假设为前提
  • 置换补贴算在优惠价里吗
  • 购进业务:从国内购进生产用原材料
  • 样机 研发费用归集与核算
  • 向其他公司投资专利账务处理
  • 免税收入包括哪些项目
  • 以前年度损益调整怎么做账
  • 卡片式账簿的优点是能够避免账页散失
  • 总账设置包括哪些内容
  • sql server数据库字段类型
  • win10系统如何查看激活状态
  • Win10打开设备管理器
  • linux使用ssh远程连接服务器
  • cocos2dx schedule
  • cocos2dx tableview基础:实现多图片的滑动显示
  • 创建ubuntu
  • js str.match
  • 深入探究替换词
  • 把下一行的数字去掉
  • unity游戏换皮教程
  • 一些常用的网络命令
  • python app爬虫教程
  • linux装python环境
  • 福建省地税局副局长 阮
  • 电子税务局如何签订三方协议扣款
  • 成都市税务app
  • 现在哪个保险公司车险好
  • 重庆外经证网上报验流程及时间
  • 税务总局2016年70号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设