gpt4 book ai didi

angular - 一个完整的 observable 会发生什么?如果我订阅一个完整的 observable 怎么办?

转载 作者:行者123 更新时间:2023-12-04 15:50:31 29 4
gpt4 key购买 nike

我无法找到 Observable 完成后会发生什么。我有一个 observable 必须在我做其他工作之前完成。为了做到这一点,我的其他函数订阅了那个 observable,当它完成时,他们会做他们的工作。

我的问题是当他们订阅时会发生什么 Observable 完成了吗?从我的测试来看,它们似乎得到了最后一个值,然后它完成了(它在 value 方法上触发 completesubscribe 回调)。如果它已经完成,我宁愿不订阅它。

有没有办法在不订阅的情况下检查 Observable 是否已完成? 我在完成时将它设置为 undefined ,但是如果我在发生这种情况时从另一个函数订阅了 observable ,则会产生一个问题。

我可以创建一个行为主体 isLoaded它以 False 开始,完成后变为 true,但我无法找到有关订阅时已完成的 observable 的作用以及最佳实践的文档。谢谢!

编辑:这不是问如何检查一个 observable 是否完整。它询问如果一个可观察对象从不同的订阅完成会发生什么,您如何检查它是否已完成。当一个 observable 完成并查看 Observable 对象时会发生什么。

最佳答案

默认情况下,可观察的行为是单播的。单播意味着与订阅是1:1的关系,与函数相同。想想你能想到的最简单的函数,如下所示:

function boo() { //do something }
boo();

您需要调用函数来触发某些事情。同样适用于 observable -
const someObservable = of(1,2,3);

someObservable.subscribe(...);
someObservable在您订阅之前什么都不做。所以检查它是否完成没有意义,因为你没有订阅任何东西。检查其他订阅是否完成也没有意义,因为它与订阅是 1:1 的关系。您可以检查订阅的状态,但这与完成状态不同。

现在还有其他类型的可观察对象, multicast - 通常在 Subject 的实现中表示.无论订阅是否存在,它都会发出,您可以检查它是否是 closed查找源本身已经关闭。取决于主题的性质,您可能会观察到不同的行为,通常在尝试订阅已完成的多播可观察对象时,您将一无所获。

关于angular - 一个完整的 observable 会发生什么?如果我订阅一个完整的 observable 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026416/

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