React Native Fetch:第二个承诺挂起

2024-04-12

React Native 的 fetch 出现了奇怪的问题。 它以前可以工作,不确定我改变了什么,但它停止工作了。

login(data,success,fail){
    console.log('doing fb login');
    fetch(host+'/api/login?credentials='+data.credentials)
        .then( (response) => {
            console.log('got login response');
            return response.json();
        } )
        .then( json => {
            console.log('got login json');
            if(json.result!='fail'){
                success(json);
            } else {
                fail(json);
            }
            return json;
        })
        .catch((error) => {
          console.warn(error);
        });
}

问题是我看到第一条“获取登录响应”消息,但随后它就挂起,直到我按下触发“获取登录 json”的屏幕并按预期继续,什么也不会发生。

令人沮丧的是,因为这种情况一直在发生,而且我不明白为什么第二个 .then() 没有自动触发。

任何帮助深表感谢。

编辑:发现类似的问题:是什么导致本机反应缓慢? https://stackoverflow.com/questions/36262456/what-could-be-causing-this-slow-fetch-in-react-native

似乎已经在考虑:https://github.com/facebook/react-native/issues/6679 https://github.com/facebook/react-native/issues/6679

此外,只有在启用 Chrome 调试工具时才能看到该行为......有趣


response.json() 是一个承诺 https://developer.mozilla.org/en-US/docs/Web/API/Body/json,不是一个值。所以它不会为你解决。 我还会根据response.status而不是json.result检查结果,因为在某些情况下服务器的响应无法转换为json(例如401)。

.then( (response) => {
   if (response.status >= 200 && response.status < 300) {
      response.json().then((data) => success(data));
   } else {
      fail(response);
   }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native Fetch:第二个承诺挂起 的相关文章

随机推荐

  • 如何通过命令查找mongodb数据和日志文件位置?

    如何通过命令查找mongodb数据和日志文件位置 就像下面的 SQL 服务器命令一样 从 sys database files 中选择 最简单的方法可能是getCmdLineOpts命令 db getSiblingDB admin runC
  • 不使用 pip 安装 pythonwheel 文件

    是否可以在不使用的情况下安装Python轮pip 我总是遇到安装问题pip 所以我通常通过复制和粘贴来手动安装库 我想知道是否有一种方法可以以类似的方式处理轮文件 我假设你有互联网接入 但是你没有有效的 pip 安装 下载点轮 wget h
  • 批处理核心数据获取结果

    我正在执行一个返回大约 2000 个实体的获取请求 目前 在我的设备上这大约需要 20 秒 所以我想我可以将获取限制设置为 100 然后当用户滚动到表视图的末尾时 获取接下来的 100 个实体 这可以通过使用来完成NSFetchReques
  • 不同的视图取决于 ContentControl (Caliburn.Micro)

    我将 ViewModel 绑定到 ContentControls 并让 Caliburn 负责创建和绑定视图 但是 我想根据我绑定到的 ContentControl 自定义 Caliburns ViewModel gt View 约定 例如
  • 如何从 xml 构建 .xsd 文件?

    有没有办法从 xml 文件生成 xsd 是否有任何类文件可以执行此操作 我不介意解决方案是 c 还是 java 我想用代码来做到这一点 但如果有任何好的免费工具也可以 Thanks xsd exe http msdn microsoft c
  • 如何伪造 Perl 钻石运算符的输入?

    这个问题的答案 https stackoverflow com questions 1213986 how can i fake stdin in perl描述如何伪造输入
  • Google API 获取文档/电子表格的内容

    我想将 Google 文档的内容显示到我自己的页面中 我可以使用以下方式获取所有文档的列表 http code google com apis documents docs 2 0 developers guide dotnet html
  • 在 Mac 上安装后使用 ALTER USER 语句重置 MySQL root 密码

    我最近安装了MySQL 安装后似乎必须重置密码 它不会让我做任何其他事情 现在我已经按照通常的方式重置了密码 update user set password password XXX where user root 顺便说一句 我花了很长
  • 这个 JPA“缓存 hashCode”模式是否有任何问题?

    我当时在 hibernateIRC 和某人与我分享了以下 部分 模式 Entity public MyEntity primary key object properties getters setters go here Column n
  • Jquery 包装AllInner() ? -- 或者内部应用wrapAll()?

    我正在尝试插入一个开口 div class container after 和一个结束语 div before 我希望有一个类似的功能wrapAll 这将适用于内部html 一个元素的 就像是wrapAllInner 会很好 我试过了 1
  • 如何通过蓝牙读取Leica DISTO的数据?

    我有一台 Leica DISTO D3a BT 它是一个测量设备 通过蓝牙发送测量结果 我编写了一些代码来获取蓝牙流 我收到了数据 但总是收到 错误 240 消息 这意味着 从用户手册来看 我不确认数据传输是否成功 我该怎么做 这是我的代码
  • Kohana 3:经过验证的模型示例

    我找到有关模型和验证的示例和教程 我说验证 或至少大部分 应该在模型中 我同意这一点 但我无法提供任何示例或教程来说明应该如何完成此操作 谁能帮我举一个简单的例子来说明如何做到这一点 模型中的规则在哪里 验证将在哪里进行 控制器如何知道验证
  • DDD和应用层

    我在DDD中添加 Stateful Stateless WebService等是应用层 应用服务 吗 从下面的链接来看 这似乎是正确的 第二个问题 我创建了一个存储库类 所有涉及存储库的方法调用都应该包装在应用程序服务中吗 或者我可以直接在
  • 删除 Firefox Web 扩展不会清除 chrome.storage.local

    好像chrome storage local即使卸载了扩展程序 也会继续存储任何数据 此行为在 Chrome 中未观察到 仅在 Firefox 中观察到 关于如何修复它有什么想法吗 这是错误 1213990 https bugzilla m
  • 非连续整数 C++ 枚举的最佳方法是什么

    继C 枚举模式 https stackoverflow com questions 12972317 count on enum c automatic我已经在这里描述过 我试图做类似的事情 但这次我想要使用的值序列不包含连续整数 代码显然
  • MS Access 无法链接到加密的后端数据库

    我有一个难题 我已经开发了一个 Access 应用程序 并准备分发它 我刚刚分割了数据库 我知道 有人说我应该从一开始就分开开发它 我没有 我还刚刚加密了后端数据库 在前端 我已链接到后端并在出现提示时输入正确的密码 链接的表现在出现在我的
  • 如何将嵌入窗口内的实时控制台会话添加到 Light Table?

    如果在 LightTable 的子窗口中嵌入一个控制台 可以减少所有编程语言开发过程中打开的窗口数量 那就太好了 最好这适用于所有平台 但至少有一个适用于 Linux 的平台会非常好 None
  • 由 create-react-app 创建后立即添加包不起作用

    我的反应很新 一天前开始 我使用 create react app 命令行来创建应用程序 我按照以下顺序尝试了 创建反应应用程序我的应用程序 npm 启动 此时应用程序运行良好 然后我做了以下事情 npm 安装 youtube api se
  • 在Android中我怎样才能知道当前的通知ID来清除通知

    现在在 android 中 我将此代码放入一个活动中 以便在按下按钮时显示通知 static int notificationCount 0 then btnNotification setOnClickListener new View
  • React Native Fetch:第二个承诺挂起

    React Native 的 fetch 出现了奇怪的问题 它以前可以工作 不确定我改变了什么 但它停止工作了 login data success fail console log doing fb login fetch host ap