gpt4 book ai didi

javascript - RxJS takeUntil 不取消订阅

转载 作者:行者123 更新时间:2023-11-28 14:21:27 24 4
gpt4 key购买 nike

我想使用“takeUntil”运算符以声明式方式取消订阅。但这基本上是行不通的。无论如何我都可以看到控制台输出。

const unsubscribe = new Subject();

function printFoo() {
of('foo')
.pipe(takeUntil(unsubscribe))
.subscribe(console.log) // Why I can see 'foo' in the console?
}

function onDestroy() {
unsubscribe.next();
unsubscribe.complete();
}

onDestroy()
setTimeout(() => printFoo(), 200)

斯塔克 Blitz :

https://stackblitz.com/edit/rxjs-svfkxg?file=index.ts

P.S. 我预计即使 unsubscribe.next() 也足以取消订阅,但即使使用 unsubscribe.complete() 它也没有不起作用。

最佳答案

您甚至在创建带有 takeUntil 的链之前调用 onDestroy()

当您最终调用 printFoo() 时,之前发出的 unsubscribe 不会被重新发出,并且主题 unsubscribe 已经完成无论如何,在这种情况下 takeUntil 将永远不会完成链。

关于javascript - RxJS takeUntil 不取消订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55103461/

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