如何在 React/Redux 中取消挂起的异步操作

2023-12-06

考虑以下情况:

当用户导航到页面时,会调度两个异步 Redux 操作来并行获取两组相关数据。如果这些提取中的任何一个失败,组件都会检测到它,该组件将在下一个周期呈现错误组件,进而调度clearState安装时的动作。

然而,其他操作仍有待解决/拒绝,并且会破坏干净状态。目的是中断此(最好是许多其他)挂起的异步操作,当clearState称为动作创建者。 AFAIK,无论如何,悬而未决的承诺都应该解决/响应。

我首先想到的是向每个减速器引入 INTERRUPTED 标志,但我无法理解如何使用它来使以下成功/错误操作不影响/返回默认状态。

如何做到这一点,同时将复杂性保持在最低限度?


我有一个类似的问题,我使用 jquery 来发出 ajax 请求和 redux-thunk 中间件。

解决方案是让你的动作创建者返回承诺,这个承诺将由调度函数返回,然后你就可以中止它。

在我的动作创建器中,我有这样的东西:

function doSomething() {
  return (dispatch) => {
    return $.ajax(...).done(...).fail(...);
  }
}

然后在我的组件中我有:

  componentDidMount(){
    this.myPromise = this.props.dispatch(doSomething());
  }

  somefnct() {
    this.myPromise.abort();
  }

也看看这个comment丹·阿布拉莫夫。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 React/Redux 中取消挂起的异步操作 的相关文章

  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 调整图像大小并将画布旋转 90 度

    这里有很多关于在 js 上使用画布旋转图像的主题 我阅读了其中的大部分内容 但无法找到解决我的问题的方法 我正在接收任何分辨率的图像 来自上传组件 我将其大小调整为 1024x768 如下所示 var canvas document cre
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 日期出现奇怪的错误,“未捕获非法访问”

    所以我试图找到最新的DateJavascript 可以处理 我把它减少到 9 月 275760 并增加了我开始捕获未捕获的天数illegal access例外new Date 09 24 275760 to new Date 10 13 2
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 如何隐藏/禁用 Highcharts.js 中的图例框?

    我想问是否可以使用 HighCharts js 库隐藏图表中的所有图例框 var chart object chart renderTo render to type graph type colors graph colors title
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points

随机推荐

  • WPS项目编号(序号)无法继续前一列表

    问题 在编写文档中 序号无法继续前一列表 序号之间无法自动连接 解决方法 使用格式刷 格式刷是复制格式的操作 可以用于选中已有格式的单元格 复制到需要设置格式的单元格 参考文章 在wps中 编号不能继续上一个编号时 采取的一种方法 CSDN
  • 计算机毕设ssm高校餐厅评价小程序y5b7i9 独有(附源码)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 JSP mybatis Ma
  • 计算机毕设ssm歌曲发烧友网站4956v9 独有(附源码)

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 JSP mybatis Ma
  • Fiddler移动端抓包

    本篇文章 博主想使用通俗易懂的话语 让大家明白以下内容 什么是抓包 哪些场景需要用到抓包 Fiddler抓包的原理 怎样使用Fiddler进行移动端抓包 抓包 包 Packet 是TCP IP协议通信传输中的数据单位 一般也称 数据包 我们
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • .NET 中忽略 HttpWebRequest ReadWriteTimeout;在单声道中工作

    将数据写入 Web 服务器时 我的测试显示 HttpWebRequest ReadWriteTimeout 被忽略 这与MSDN规范 例如 如果我将 ReadWriteTimeout 设置为 1 1 毫秒 调用 myRequestStrea
  • 如何将会话变量传递给 RoR 中的模型?

    我之前在应用程序中使用了全局变量来传递信息 但我遇到了一个问题 感谢这里的每个人建议我将这些数据存储在数据库的会话中 我尝试了一下 但发现无法访问Model中的session变量 我用谷歌搜索知道这是模型的正常行为 RoR 不会将会话变量传
  • 更改 JCheckBox/JRadioButton 选择颜色

    有没有办法更改复选框 单选按钮的选择颜色 以下是如何为 JCheckBox 执行此操作 UIManager put CheckBox focus Color RED 这里有一个很好的工具 http tips4java wordpress c
  • 为什么部分匹配时 preg_match() 总是验证为 true?

    最近一直在尝试正则表达式 当我试图确认preg match 函数没有返回预期结果 false 我意识到我的正则表达式在部分匹配和完全匹配的情况下都会评估为 true 任何更有经验的人都可以分享一些关于为什么会这样工作的评论吗 我已经使用以下
  • 如何在TreeView中包裹TextBlock内容?

    I have TreeView 它使用数据模板显示一些数据 这是 XAML
  • 获取非 Activity 类中的 Context [重复]

    这个问题在这里已经有答案了 在android应用程序中 如果活动类名称已知 有没有办法在非活动类中获取android中的上下文 如果您的类是非活动类 并且从活动创建它的实例 您可以通过后者的构造函数传递上下文实例 如下所示 class Yo
  • 使用 Django REST Framework 时,当序列化器嵌套时如何排除父级?

    我觉得这可能在文档中 但我似乎无法弄清楚 如果我有一个包含外键的序列化器fields当序列化器嵌套在相关对象中时 如何排除该 FK class EmployerSerializer serializers HyperlinkedModelS
  • Vagrant w/windows 作为主机,由于 crlf,文件无法在虚拟机上运行

    我正在尝试设置 vagrant 以 windows 作为主机 以 ubuntu 作为来宾 我想将 vagrantfile 本身提交到存储库 因此步骤是 在 Windows 中克隆存储库 启动 vagrant 并准备好环境并运行 问题是 由于
  • MySQL 查询最近 2 次尝试的平均值

    我有一张桌子 quiz userid attempt grade 1 3 1 33 2 3 1 67 1 3 2 90 10 3 4 20 2 3 2 67 1 3 3 55 现在 对于第一个测验 用户有 3 次尝试 即 33 90 55
  • fanotify 递归真的有效吗?

    我使用如下代码来监视整个文件系统 fanotify mark fd FAN MARK ADD FAN MARK MOUNT FAN OPEN FAN EVENT ON CHILD AT FDCWD 但我需要编写一些测试 所以 我想只监视一个
  • 在浏览器中显示 Angular 2 装饰器元数据

    我正在学习 Angular 2 内部组件和行为 并且在尝试显示不同装饰器提供的元数据时遇到问题 例如 我需要访问 NgModule 注释提供的元数据 NgModule declarations imports providers boots
  • 如何在PyQt5中自定义QGroupBox标题?

    下面是一段创建简单 QGroupBox 的代码 from PyQt5 QtWidgets import QApplication QWidget QGroupBox QGridLayout class QGroupBoxTest QWidg
  • 在当前事务之外提交事务(如 Oracle 中的自治事务)

    我需要从存储过程写入日志表 现在 此日志信息必须在回滚过程中幸存下来 我知道这个问题以前曾被问过 但我的情况不同 我在这些问题中找不到我的问题的答案 当存储过程中没有错误时 事情就很简单 日志表中的条目就在那里 当出现错误时 事情就会变得复
  • cocoapods 库的代码覆盖率 - iOS 单元测试

    在 Xcode 7 中 cocoapods 库的库具有排除代码覆盖率的功能 但在 Xcode 8 中 该库将包含代码覆盖率 我是否可以在代码覆盖率中排除该库 例子 安装 pod TPKeyboardAvoiding TPKeyboardAv
  • 如何在 React/Redux 中取消挂起的异步操作

    考虑以下情况 当用户导航到页面时 会调度两个异步 Redux 操作来并行获取两组相关数据 如果这些提取中的任何一个失败 组件都会检测到它 该组件将在下一个周期呈现错误组件 进而调度clearState安装时的动作 然而 其他操作仍有待解决