在 ngOnDestroy 函数中调用时如何等待 api 调用完成?

2023-12-21

我有一个场景,我必须在特定组件被销毁之前将数据发送到 api (数据库)。正如 Angular2 生命周期中所描述的,在组件被销毁并调用之前执行一个方法ngOnDestroy。但正如文档中所指定的,这是一个 void 函数,因此它不会等待某些结果返回。

我的问题是如何在 ngOnDestroy 函数中执行对 api 的调用并等待它完成?

如果我只是调用更新函数,它就可以工作,但是当我从一个组件路由到另一个组件时,第一个组件的数据尚未更新,而下一个组件加载旧数据(如果我点击刷新,那么我会得到新数据)。所以问题是我不能等待更新函数完全执行,然后允许组件销毁并路由到下一个组件,该组件将加载正确的更新数据:

updateData(data: any, callback?: Function) {
    this.apiService.update(data).then(response => {
        callback(response);
    }
}

ngOnDestroy() {
    this.updateData(this.data);
}

// Maybe i could somehow use callback functionality to postpone execution of ngOnDestroy function
ngOnDestroy() {
    this.updateData(this.data, response => {

    });
}

或者有其他方法可以解决这种情况吗?


我想,与其做这样的事情,不如尝试这种更干净、更好的方法。

利用共享服务,将 r 值传递给共享服务Destroy然后导航到第二个组件时。有一个路由器解析,它将确保在加载组件时填充数据并供您使用。

对于共享服务,请检查此LINK https://rahulrsingh09.github.io/AngularConcepts/faq- 问题2和路由器解析LINK https://rahulrsingh09.github.io/AngularConcepts/guard.

如果您想要更好的可读性,您也可以使用 redux 或 ngrx areLINK https://rahulrsingh09.github.io/AngularConcepts/ngrx

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

在 ngOnDestroy 函数中调用时如何等待 api 调用完成? 的相关文章

随机推荐

  • 如何在 HttpClient HttpRequestMessage 中设置 cookie

    我正在尝试使用 web apiHttpClient向需要以标识帐户的 HTTP cookie 形式登录的端点进行发布 这只是 ifdef ed 出发行版 如何添加 cookie 到HttpRequestMessage 以下是为请求设置自定义
  • 通过 GoogleMap 滑动抽屉

    首先 我知道 SlidingDrawer 已被弃用 但我还没有找到任何替代方案 所以我仍然使用它 3 如果有人知道它的替代方案 请分享 所以我的 Activity 中有一个 GoogleMap 实际上是一个片段 但这并不重要 并且在同一屏幕
  • 用于将整个存档解压到 java 目录中的实用程序

    我想在我的程序中做这样的事情 File zipFile File destDir ImaginaryZipUtility unzipAllTo zipFile destdir 我不可能是第一个通过程序执行此操作的人 我在哪里可以找到像上面这
  • 错误:无法在会话中找到请求令牌

    我在主护照存储库上发现了一些问题 但是 我认为这主要与这个特定策略有关 因为我能够使用 Passport google oauth 策略成功进行身份验证 Error failed to find request token in sessi
  • R中的数字和符号相乘

    我有两个具有相同尺寸的数据表 一个填充数字 另一个填充可以是正数或负数的符号 例如 A data table colOne c 1 3 4 colTwo c 1 0 1 B data table colOne c a b c colTwo
  • 使 TeamCity 版本与 .NET 程序集版本匹配

    现在我们的程序集的版本号是 2 0 831 0 据我了解 这是主要版本 次要版本 日期和内部版本号 如果我进行更改并在同一天再次构建 则会是 2 0 831 1 2 0 831 2 等 我的 TeamCity 内部版本号格式仅为 2 0 其
  • PhpStorm 定义可折叠代码区域(Visual Studio 风格区域)可能吗?

    在 Visual Studio 中您可以使用 region and endregion包装开发人员定义的代码块 我很想在 PhpStorm 中看到此功能 它是组织大型源文件 例如大量接口实现 的理想方式 是否有可能使 PhpStorm 表现
  • 确定哪个 Tkinter 小部件位于顶部(或可见)

    我想确定哪个小部件 在本例中为框架 位于顶部 或无论如何可见 from Tkinter import spam1 0 spam2 1000 def busywork global spam1 global spam2 if frame1 i
  • 在 Numba 中计算 numpy 数组中非零值的数量

    很简单 我正在尝试计算用 Numba 编译的 NumPy jit 中的数组中非零值的数量 njit 我尝试过的以下操作是 Numba 不允许的 a a 0 size np count nonzero a len a a 0 len a le
  • 在 ReadTheDocs 上使用自定义主题

    我尝试使用从 Sphinx 的内置 ReadTheDocs 主题继承的自定义主题 当我在本地计算机上使用它时 我有很好的设计 但是当我阅读文档版本 从 gi thub 导入 时 没有 CSS 我错过了什么 使用自定义主题的分支的存储库 ht
  • Django Facebook Connect 应用推荐

    我想为我的 Django 网站实现 Facebook 连接登录 并且我已经检查了现有的应用程序 到目前为止 我已经找到了Django Socialauth http github com uswaretech Django Socialau
  • Julia 中有外部映射函数吗?

    我正在尝试构建四个向量 模型中的参数 的所有可能组合 这将为我提供一个大的 nx4 矩阵 然后我可以对每组 行 参数运行模拟 在 R 中我将通过使用来实现这一点expand grid在 Mathematica 风格中 我可以使用类似外积的东
  • Clojure 源代码中的父 eval(阅读器)函数?

    In 彼得 诺维格 http norvig com 史诗巨著人工智能编程范式 http norvig com paip html在第 7 章中 他描述了一个函数interp这实际上是一个简单的eval解释 REPL 中的基本方案时使用的函数
  • Django 过滤 ModelChoiceField 的查询集

    我一直在使用名为 ModelChoiceField 的表单字段并通过所有对象进行查询 但这并不完全是我打算使用它的目的 class PictureForm forms ModelForm Whiteboard forms ModelChoi
  • 是否有将资源嵌入 Linux 可执行映像的标准方法? [复制]

    这个问题在这里已经有答案了 通过 Windows API 将二进制资源嵌入到 PE 映像 EXE DLL 中非常容易 请参阅http msdn microsoft com en us library ms648008 v VS 85 asp
  • 为什么 PHPmailer 在发送后将 mime 标头打印到屏幕上?

    问题是 我刚刚实现了 PHPMailer 它在发送电子邮件后将 Mime 标头打印到屏幕上 我正在使用 GITHUB 上列出的最新 PHPMailer 代码 我几乎浏览了所有内容 但找不到打印到屏幕的任何原因 如果您需要更多信息 请告诉我
  • Java - windows/linux 中的控制台输出

    Java支持在输出到控制台时控制光标吗 例如 我想在执行 System out print 之前设置字符位置 可能还设置颜色 想想像 top 这样的应用程序写入控制台的方式 谢谢 您通常不使用 system out 来执行这些操作 nix
  • 如何使用关联常量来定义数组的长度? [复制]

    这个问题在这里已经有答案了 我有一个特征 它代表一个可以通过 UDP 套接字发送的实体 pub trait ToNetEnt const NET SIZE usize fn from net data u8 gt Self fn to ne
  • EL 方法中的参数

    我想在 JSP 中使用带有参数的 EL 方法 但 EL 不支持方法中的参数 实际上我想显示一个表格 其中有一个字段可以在一个单元格中输出值列表 对于每个单元格 此列表都会有所不同 这取决于参数 我该如何使用 EL 来做到这一点 我已经尝试过
  • 在 ngOnDestroy 函数中调用时如何等待 api 调用完成?

    我有一个场景 我必须在特定组件被销毁之前将数据发送到 api 数据库 正如 Angular2 生命周期中所描述的 在组件被销毁并调用之前执行一个方法ngOnDestroy 但正如文档中所指定的 这是一个 void 函数 因此它不会等待某些结