gpt4 book ai didi

javascript - 插入区间可观察值

转载 作者:太空宇宙 更新时间:2023-11-04 15:37:11 25 4
gpt4 key购买 nike

我有一个有一些订阅者的可观察对象。在定义的时间段内,它对后端进行新的调用并检索信息。我希望能够在指定时刻触发一次性数据加载,在该可观察对象中获取该数据,但不更改间隔。

对于这个 observable,我有一些订阅者。

 NotificationService.notifObservable = Observable.interval(1 * 60 * 1000)
.startWith(0)
// merge the observable streams
.mergeMap(res => this.http.get('ws/message/list'))
// extract the body from the response
.map(res => res.json())
// use only one result
// that is shared between subscribers
.publishReplay()
// converts the connectable observable to observable
.refCount();

这里我想从同一个URL获取数据并合并上面的可观察数据,但我不想改变它的时间间隔。这意味着,假设此时 observable 提取数据,我会在 10 秒内触发重新加载,50 秒后,应该从该间隔进行另一个池化。基本上,我只是将数据插入可观察流中。我怎样才能做到这一点?

triggerNotifReload() {

}

最佳答案

您可以通过将您的可观察量与可观察量(主题)合并来实现该功能,当您推送一个值时,它会像您的值一样执行 http 请求。代码将是这样的:

mySubject: Subject<any> = new Subject<any>();

constructor() {

let myTriggerValueObs = this.mySubject.flatMap(() => this.http.get('ws/message/list'))


let notifObservable = Observable.interval(1 * 60 * 1000)
.startWith(0)
// merge the observable streams
.mergeMap(res => this.http.get('ws/message/list'))
// merge wiht trigger obs
.merge(myTriggerValueObs)
// extract the body from the response
.map(res => res.json())
// use only one result
// that is shared between subscribers
.publishReplay()
// converts the connectable observable to observable
.refCount();

}

triggerNotifReload() {
this.mySubject.next();
}

我已经测试了代码,它运行得很好。希望这会有所帮助。

关于javascript - 插入区间可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44238262/

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