我正在使用fetch API在我的React Native Application中调用查询服务器。但是,我的应用程序在收到服务器的响应后需要50秒才能调用then
函数。我做错了还是承诺工作很慢?
fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
},
body: bodyContent
}.then((responseText) => {
console.log(responseText);
responseText.json().then(function(response){
console.log(response);
});
});
response
在responseText
更新:刚才我再次点击屏幕后发现responseText.json()
承诺正在执行。这个问题很奇怪。
答案 0 :(得分:2)
由于我们将其缩小到需要花费太多时间的json()调用,似乎这是一个报告的问题(https://github.com/facebook/react-native/issues/6418)并不经常发生,到目前为止是不可重现的。它可能与json对象的结构或大小有关。
我个人使用你在本机应用程序中大量使用的代码构造,并且没有性能损失。但是,我的典型响应非常简单(例如,包含大约20个键,没有嵌套等的10个对象的列表)。
您可以尝试我链接到的问题报告中的建议,并使用responseText.text()并比较效果。
答案 1 :(得分:2)
最后,我找到了解决这个问题的方法。这是因为Chrome Debugging
。如果我停止chrome调试,它工作正常。如果Chrome调试器正在运行,我必须点击屏幕上的返回值。因此,如果您正在运行chrome调试器,请忽略此延迟。
答案 2 :(得分:1)
承诺比回调慢一点。但不是50秒!我认为你有互联网连接的问题。
答案 3 :(得分:0)
尝试从浏览器(通常是F12键)打开webtool套件开发工具,然后进入网络标签页。
您可以查看查询所用的时间。如果需要很长时间,则表示您的网络连接或响应设置延迟的服务器。
如果没有,则是客户端。
答案 4 :(得分:0)
我遇到了同样的问题,responseText会在几毫秒内立即返回,但是当它使用.json()转换为json时,需要几秒钟,有趣的是如果我在.json期间点击屏幕()解析周期,它会立即恢复json数据