Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 花太多时间打电话给promise';s然后函数_Javascript_React Native_Fetch Api - Fatal编程技术网

Javascript 花太多时间打电话给promise';s然后函数

Javascript 花太多时间打电话给promise';s然后函数,javascript,react-native,fetch-api,Javascript,React Native,Fetch Api,我正在使用fetchapi在我的React本机应用程序中调用query服务器。但是,我的应用程序需要50秒才能调用,然后在收到服务器的响应后才能运行。我有没有做错什么,或者承诺的工作速度很慢 fetch(url, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded',

我正在使用fetchapi在我的React本机应用程序中调用query服务器。但是,我的应用程序需要50秒才能调用
,然后在收到服务器的响应后
才能运行。我有没有做错什么,或者承诺的工作速度很慢

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()
承诺只有在我再次点击屏幕后才会执行。这个问题很奇怪。

承诺比回调慢一点。但不是50秒!我想你的网络连接有问题

尝试从浏览器(通常是F12键)打开WebToolKit Developer,然后进入“网络”选项卡

您可以看到查询所用的时间。如果需要很长时间,则是您的网络连接或服务器设置了延迟响应


如果不是,则是客户端。

由于我们将其缩小到需要花费太多时间的json()调用,因此这似乎是一个报告的问题(),不经常发生,到目前为止不可复制。这可能与json对象的结构或大小有关

就我个人而言,我在我的react本机应用程序中使用了您大量使用的代码结构,并且没有性能损失。然而,我的典型响应非常小和简单(例如,一个包含10个对象的列表,大约有20个键,没有嵌套等)


您可以尝试我链接到的问题报告中的建议,使用responseText.text()并比较性能。

我遇到了相同的问题,responseText会在毫秒内立即返回,但当它使用.json()转换为json时,需要几秒钟,有趣的是如果我在.json()过程中单击屏幕解析期间,它会立即返回json数据

最后,我找到了这个问题的解决方案。这是因为Chrome的调试。如果我停止chrome调试,它工作正常。如果Chrome调试器正在运行,我必须点击屏幕上的返回值。因此,如果您正在运行chrome调试器,请忽略此延迟。

您是如何查看请求并找出问题所在的?我看到了控制台日志。它首先记录了响应Text,然后在50分钟后记录了响应。因此,请求花费了这么长时间,网络面板将向您显示一些详细信息,但您可能需要查看服务器端日志以了解问题所在。如果问题出现在响应回调中,那么返回的响应有多大,需要花费很长时间才能解析?您引用的控制台日志是上面代码中的console.log(responseText)?cuplrit不是json函数吗?服务器会立即返回数据。responseText来自服务器。json函数从
responseText
中提取
response
需要50秒。如果问题出在internet连接上,则打印responseText本身需要更多时间。这个承诺只是从responseText提取响应。然后问题是responseText。然后()可能是从DB或其他表达式从服务器导出的数据太长。您可以测量代码在后端运行的时间。如果使用react native,可能会有问题。可能是.then(.then())的问题,我正在构建react本机应用程序。不是普通的web应用程序。所以,我在“网络”选项卡中看不到这些东西。我也面临着完全相同的问题。我找到了解决方案。检查我的答案。这是因为Chrome调试。:)是的,我现在一天也不会面对这个问题。:)