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:第二个承诺挂起 的相关文章

  • 未捕获的类型错误:无法读取未定义的属性“toLowerCase”

    我收到此错误 它源自 jquery 框架 当我尝试加载准备好的文档上的选择列表时 出现此错误 我似乎无法找到为什么会出现此错误 它适用于更改事件 但在尝试手动执行该函数时出现错误 未捕获的类型错误 无法读取未定义的属性 toLowerCas
  • 如何在 JS Rails 响应中包含 HTML?

    我有一个响应 HTML 和 JS AJAX 查询的 FooController app controllers foo controller rb class FooController lt ApplicationController l
  • 如何获取传单标记簇中点击事件的图块?

    这是我的代码 function onMapClick e e originalEvent defaultPrevented true var orig e originalEvent console log orig target map
  • 使用 javascript 禁用按钮:FF 与 IE

    我有一排按钮 它们都会创建一个我想在新选项卡中打开的 pdf 文件 这样按钮页面就会保持在顶部 并且 pdf 会打开以进行打印 为了防止单击按钮两次 我禁用该按钮 如下所示 我使用 python
  • mouseover 和 mouseout 事件在子进程上触发

    代码 div div div div 如果我将鼠标悬停在Navigation the Drop Downdiv 向下滑动 如果我将鼠标移开 它会向上滑动 问题是如果我将鼠标悬停在孩子上Drop Downdiv它也向上滑 动 有谁知道我该如何
  • express 或express-generator:我需要两者吗?

    只是探索 Node js 并遇到了 Express 在 npm 存储库站点上https www npmjs com package express https www npmjs com package express它明确指出安装是 np
  • Menu.Item 中的 Antd 自动换行

    可以在 Menu Item 组件中应用自动换行吗 示例不起作用
  • Nextjs 无法在生产环境中的“.next”目录中找到有效的构建

    我正在 docker 中运行我的应用程序 但我的生产构建和启动脚本仅在 docker 环境中失败 虽然node env开发在docker环境下运行良好 这是我的脚本 无法进行生产构建并启动服务器 我正在使用nodemon和babel bui
  • 如何检查 Map 或 Set 是否为空?

    对于 JavaScript 中的传统对象 使用以下命令很容易检查它是否为空 Object keys method const emptyObj console log Object keys emptyObj length 0 true i
  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • 通过多个回调优雅地传递“点击事件”

    当未登录的用户单击给定的按钮时 我想停止该事件 收集他的 oauth 收集他的电子邮件 如果我没有 然后执行该事件 我想用 javascript 来做所有事情 因为这会让事情变得更加简单 这就是我执行它的方式 我有两个问题 有没有更优雅的方
  • 如何查看网站浏览者的操作系统?

    我运行的是 Ubuntu 8 04 最近在访问网站时收到以下错误 请使用运行 Windows 98 2000 Me NT 或 XP 的计算机返回 www site com 网站如何知道我正在运行哪个操作系统 是仅通过 javascript
  • 违反不变性:Picker 已从 React Native 中删除

    错误不变违规 Picker 已从 React Native 中删除 现在可以安装并导入 react native picker picker 而不是 react native 请参阅 https github com react nativ
  • D3v6 嵌套图 - 嵌套 join()?

    我想可视化每个节点的 孩子 洞察力 我猜 D3v6 join 函数可以嵌套 不幸的是我找不到任何例子 下面的代码片段包含一个具有 3 个节点和子节点作为属性的outerGraph 到目前为止 这些孩子还没有被使用 相反 innerGraph
  • ExpressJS - DELETE 请求后 res.redirect

    我一直在寻找如何执行此操作 我正在尝试在发出删除请求后重定向 这是我正在使用的代码没有重定向 exports remove function req res var postId req params id Post remove id p
  • 为什么 JSON 结果可以是布尔值而不是对象或数组?

    From JSON 网站 http json org JSON 建立在两种结构之上 名称 值对的集合 在各种语言中 这被实现为对象 记录 结构 字典 哈希表 键控列表或关联数组 值的有序列表 在大多数语言中 这被实现为数组 向量 列表或序列
  • Jquery 两个字段的时间差(以小时为单位)

    我的表单中有两个字段 用户可以在其中选择输入时间 start time end time 我想在更改这些字段时重新计算另一个字段的值 我想做的是获取两次之间的小时数 例如 如果我的开始时间为 5 30 结束时间为 7 50 我想将结果 2
  • 将 div 文本分配给变量然后显示它

    我有一个简单的任务 我试图完成学习 JavaScript 但一直无法找到明确的答案 这是代码 div Testing div 基本上我希望将方框 div 中的文本存储到变量中 然后 我想在页面的不同部分显示该变量的文本 使用上面的代码我得到
  • 渲染作为 Prop 传入的 Component

    我怎样才能渲染一个StyledComponent它是作为道具传入的吗 我正在传递一个Spinner组件到我的BarComponent作为渲染的道具 我尝试使用 this props icon in my BarComponent在下面的示例
  • Nodejs 一个接一个地运行异步函数

    我是 JS nodejs 的新手 所以如果我不能提出切中要害的问题 请原谅我 所以基本上 如果我有两个异步函数 async function init async function main 如何确保在 init 完成其异步请求后调用 ma

随机推荐

  • 如何通过命令查找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