位置: 编程技术 - 正文

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

  • 印花税核定征收文件
  • 劳务公司为一般纳税人的税率
  • 个税要计提吗?
  • 非正常损失的货物,增值税做什么科目
  • 缺少订单停工费用如何做账
  • 企业向个人借款是否合法
  • 机械设备租赁印花税谁交
  • 上月计提工资下月要冲回吗冲会吗
  • 一般纳税人购买并销售免税货物所发生的运输费用
  • 税务记账保存多少年纳税人转小规模
  • 理财的利息收入计入什么科目
  • 独立核算的分公司怎么报税
  • 公益性捐赠可以结转几个年度
  • 销售费用包括哪些二级科目
  • 营业外收入在资产负债表怎么填
  • 捆绑销售如何做会计处理合适?
  • 工程公司后期维保费用如何入账?
  • 业务招待费取得的专票可以抵扣吗
  • 空白发票作废后验旧显示不了
  • 有开发票就要交印花税吗?
  • 以前年度已经缴纳的税
  • 记账凭证领用材料如何填写
  • 收到投资款怎么做凭证
  • 广告制作费怎么入账
  • 股利如何算
  • 技术转让时增值税怎么算
  • 固定资产折旧有几类
  • 社保打入其他公司代扣分录怎么做?
  • 法人股东分红如何申报所得税
  • 商品条码续展费怎么退
  • win11dns电脑服务器未响应如何处理
  • 总分公司分税
  • 如何降低融资成本率
  • 历史时间线怎么写
  • 品牌转让怎么写
  • win7命令提示符怎么打开
  • 冷车启动缺缸热车正常已解决
  • 深度deepin系统安装教程
  • win10专区
  • 为什么磁盘会消失
  • vue引入echarts柱状图
  • 二手固定资产怎么折旧
  • 在高地陶恩山脉的滑雪旅行,奥地利巴德加斯坦 (© RooM the Agency/Alamy)
  • phpqrcode
  • Yii2超好用的日期和时间组件(值得收藏)
  • php plates
  • 对于异步电动机国家标准规定3kw
  • 公司注册资金表格模板
  • 公司名下商品房过户给公司需要交过户费
  • 小规模个体户国税怎么算
  • 政府返还的个税手续费会计分录
  • 单位银行提取大额现金最多能取多少
  • 揭秘蟹卡骗局
  • 医疗器械和医疗耗材是一回事吗
  • 上月计提多了怎么办
  • 外国人避税
  • 实收资本减少的要交什么税
  • 上个季度增值税报错了
  • 固定资产小汽车折旧怎么计提
  • 暂扣员工工资应怎么处理
  • 没有发票财务报表怎么做
  • 企业的支出包括( )支出
  • 医院体检收入计入什么科目
  • 专用发票账目不对怎么办
  • bios设置网卡开启
  • linux ifcon
  • 手机用xp系统
  • mac怎么卸载苹果系统
  • dns win7
  • Android NDK Cocos2dx 3.4 Label中文显示
  • Javascript之Number对象介绍
  • echarts splitnumber
  • 好用的shell终端
  • jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
  • 【mclin】手把手叫你在Eclipse里添加Android开发功能(附:完整离线版Android_SDK和Android_ADT下载)
  • javascript运用
  • 福建2021年水利水电招聘
  • 扬州税务学院官网朱诗柱
  • 什么是财务审计
  • 翡翠是否交消费税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设