gpt4 book ai didi

angular - rxjs , switchMap ,间隔,提供了 'undefined',其中需要一个流

转载 作者:行者123 更新时间:2023-12-05 03:02:02 25 4
gpt4 key购买 nike

尝试从服务器获取数据,每 10 秒间隔一次服务。如果返回价格,则停止间隔。代码如下:

但我收到错误:

ERROR TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

代码:

public Respond() {

this.dataService.WaitingForServiceRespond()
.pipe((
debounceTime(2000),
switchMap((r: any) => {
if (!r.price) {
setInterval(() => {
return this.Respond();
}, 10000)
} else {

this.dataService.user.payment = r;
console.log('price returned', r);
return ''
}
})
))
.subscribe(e => {
console.log(e)
})

最佳答案

问题出在您的 switchMap 上。它期望返回一个流。当您使用 setInterval 时,您什么都不返回。您可以通过返回 rxjsinterval() 而不是调用 setInterval() 来返回一个 Observable

import { interval } from 'rxjs';
...

public Respond() {

this.dataService.WaitingForServiceRespond()
.pipe((
debounceTime(2000),
switchMap((r: any) => {
if (!r.price) {

return interval(10000).pipe(tap(() => this.Respond()))

} else {

this.dataService.user.payment = r;
console.log('price returned', r);
return of('')
}
})
))
.subscribe(e => {
console.log(e)
})
}

关于angular - rxjs , switchMap ,间隔,提供了 'undefined',其中需要一个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55219620/

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