gpt4 book ai didi

angular - rxjs可观察的重用逻辑

转载 作者:行者123 更新时间:2023-12-03 16:30:39 31 4
gpt4 key购买 nike

我正在编写一个 Angular 文件上传组件。

成功上传后,它会显示一个通知和两个按钮:

  • replace:删除上传的文件并打开文件选择器对话框
  • remove:删除上传的文件并显示通知

  • 删除上载的文件意味着向后端系统发出HTTP DELETE请求,并处理可能的失败和重试。
    _handleReplace() {
    this.replaceClicked$.pipe(
    tap((x) => this._backend.delete(this.file, this.fieldName)),
    tap((x) => openFileSelectorDialog())
    );
    }

    _handleRemove() {
    this.replaceClicked$.pipe(
    tap((x) => this._backend.delete(this.file, this.fieldName)),
    tap((x) => displayNotice())
    );
    }

    在此代码段中,我不会处理可能的失败和重试。

    如何提取删除逻辑以避免在两种方法中重复进行?

    或更笼统地说,如何将常见的变换应用于两个不同的可观察对象?

    谢谢!

    最佳答案

    您可以使用pipe方法来创建一个自定义运算符,如下所示:

    deleteFile = () => pipe(
    tap((x) => this._backend.delete(this.file, this.fieldName))
    );

    _handleReplace() {
    this.replaceClicked$.pipe(
    deleteFile(),
    tap((x) => openFileSelectorDialog())
    );
    }

    _handleRemove() {
    this.replaceClicked$.pipe(
    deleteFile(),
    tap((x) => displayNotice())
    );
    }

    管道函数应从rxjs导入:
    import { pipe } from "rxjs";

    关于angular - rxjs可观察的重用逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50907458/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com