1.7Fetch

Fetch:http://reactnative.cn/docs/0.44/network.html#content

大概意思就是fetch就是通过网络请求数据的,然后看个简单的:

fetch('https://mywebsite.com/mydata.json')

那不多说,先来试一下。

这里参考的是同事的代码。这个res就是返回的数据,然后通过解析成json再用字符串形式返回,alert就是弹出框显示。

 

这两个没有服务器,暂时还没法测试。

再看下面的处理服务器的响应数据

这个方法名我们就不要啦,取中间的粘进我们的代码:

Run,发现啥效果也没。。。

我们加点console进去:

但是面板始终是白的,什么都没打印出来。后面经过google,说是要先在模拟器摇一摇,选调试js,然后才能console,那我们试试。

 

果然出现了

清空一下,然后再按两下R看下打出来的log。

打出来的log一片混乱,加一些标识符来区分。

打出来的Log:

看得出1跟2没区别,就是说这个.json不会改变response本身的值。而3是response.json的值,是一个Promise。官网提到了Promise是需要了解的:

赶紧百度一下,然后发现这个东西不是一下两下能说清的。

得另开篇幅来学习。暂时把他看成是一个传递信息的对象吧。

 

然后我们再加个

结果:

什么情况,未定义?为啥上面那个then的response又是有值的?responseJson不就是换了个名字为啥就是未定义了?果然还是应该要了解一下fetch是怎么回事,瞎分析不行。百度

下,我参考的是这篇文章:http://web.jobbole.com/84924/

这里说得比较好,顺带还解释了下promise。

就是说fetch(URL)其实是返回了一个promise,然后.then是promise里的一个方法。那么第二个.then要执行,必须要在第一个.then里面返回一个promise对象,而response.json()就是一个promise对象,然后通过return返回出来。

把代码改成:

结果:

???4跑哪里去了?

经多次测试发现,只要是:

如果response.json只要执行过了,那return response.json()的结果就不会被下一个then显示出来,所以这里必须把console.long([‘3’,response.json()])屏蔽掉。知道为啥的麻烦告诉我一下。

 

下面还提到了新语法:

还是先不深究了。。。感觉像是一个异步函数会一直等到结果返回再赋值给变量,然后再执行下一步。

然后记得要在catch捕捉所有可能出现的错误(嗯,闪退往往就是这样出现的)。

然后还有另外一个库:

XMLHttpRequest

这个听说已经比fetch要过时了,那以后应该会越用越少吧,那就暂时不理。

WebSocket

是个重要东西,如果不是用http请求而是使用socket的话,这个东西必不可少。

看一下:

至此,除了promise就全部搞定了。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值