【问题标题】:Access the data from two observables without multiple subscriptions从两个 observable 访问数据,无需多个订阅
【发布时间】:2023-03-23 05:10:01
【问题描述】:

我的第一个 observable 发出关于我的用户的数据(来自 Firebase)。在发出此数据时,我想触发对 Firebase 的第二次调用,从不同的集合中检索各种额外的用户信息。

我可以很好地单独管理这两个操作,但显然后一个调用应该只在第一个调用成功后才真正发生。我想这与mergeMap 有关,但我不知道该怎么做。应该指出,尽管我尝试过,但我没有找到类似的问题,这些问题既能得到回答,又能以我无法完全理解的方式提出解决方案。

this._auth.userState$
    .mergeMap(user => this._userMetaData.getData(user.uid))
    .subscribe(data => {
        console.log(data);
    });

这是我最初的努力。我希望 console.log 会(以某种方式)返回两个调用的数据。相反,它只记录一个空数组。

任何人都可以在这里指出正确的方向吗?

【问题讨论】:

    标签: javascript angular rxjs observable


    【解决方案1】:

    我发现有 2 个不同的点值得强调。

    1) 在提交中,您希望访问 2 次调用返回的数据:

    这可以通过以下方式完成

    .mergeMap(user => this._userMetaData.getData(user.uid) .map(data => ({user, data}) )

    在这里,您基本上通过最后一个 map 创建了一个 return,它是一个引用第一次调用返回的用户和​​第二次调用返回的数据的对象

    2) 在日志中您会看到一个空数组:

    这里您需要查看您的逻辑,因为根据您当前的代码,您应该在日志中看到第二次调用的结果

    【讨论】:

    • 谢谢你,这让我到达了我需要的地方!
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多