gpt4 book ai didi

rxjs - 将可观察的事物变成主题

转载 作者:行者123 更新时间:2023-12-01 19:35:29 25 4
gpt4 key购买 nike

我们有一个函数可以从后端获取可观察的流。然而,我们希望能够在后端完成这些更改之前推送到该可观察的内容以查看更改。为此,我尝试返回一个主题,但取消订阅后连接仍在继续。

换句话说,在下面的代码中,我们希望 console.log(i) 在我们订阅主题之前不要启动,并在我们取消订阅时结束:

import { ReplaySubject, Observable, interval } from 'rxjs';
import { tap } from 'rxjs/operators'

function test() {
const obs = interval(1000).pipe(tap(i => console.log(i)));
const subj = new ReplaySubject(1);
obs.subscribe(subj);
return subj;
}

const subject = test();
subject.next('TEST');

const subscription = subject.pipe(
tap(i => console.log('from outside ' + i))
).subscribe()
setTimeout(_ => subscription.unsubscribe(), 5000);

example

最佳答案

您无法在测试订阅。我猜你想创建一个 Observable 和一个主题和 merge这些 - 您必须分别归还它们。

return [subject, merge(subject, obs)]

然后

const [subject, obs] = test();
subject.next()

但我会通过提供主题作为参数来做到这一点。

import { ReplaySubject, Observable, interval, merge } from 'rxjs';
import { tap } from 'rxjs/operators'

function test(subject) {
return merge(
interval(1000).pipe(tap(i => console.log(i))),
subject
);
}

const subject = new ReplaySubject(1);

const obs = test(subject);
subject.next('TEST');

const subscription = obs.pipe(
tap(i => console.log('from outside ' + i))
).subscribe()
setTimeout(_ => subscription.unsubscribe(), 5000);

关于rxjs - 将可观察的事物变成主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51782888/

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