订阅 behviorSubject 中的 observable:出现错误
Posted
技术标签:
【中文标题】订阅 behviorSubject 中的 observable:出现错误【英文标题】:subscribing to an observable inside a behviorSubject: getting error 【发布时间】:2021-05-29 16:17:25 【问题描述】:我正在尝试订阅 BehaviorSubject,然后订阅取决于条件的可观察对象
BehaviorSubject 是:
orderListSubject= new BehaviorSubject<any>(orderListTouched: false, orderList: []);
myAllOrders = new BehaviorSubject<OrderModel[]>([])
我有一个服务试图检查 orderListTouched 是否为假,我需要订阅另一个 observable 以将值推送到 orderList
orderListTouched 为 false 时调用的函数:
getMyOrderList()
this.courseService.getMyOrderList(this.user.uid).snapshotChanges().pipe(first())
这里是我试图用来包装这个案例的函数:
listenToOrderList()
this.courseService.orderListSubject.pipe(map(ev =>
return ev.orderListTouched;
), switchMap((res)=>
if(res === false)
return this.getMyOrderList()
if(res === true)
return this.myAllOrders
))
当我这样做时,我收到一个错误:“(res:any)=> void”类型的参数不可分配给“(value:any,index:number)=> ObservableInput”类型的参数。 类型“void”不可分配给类型“ObservableInput”。
请指教!
【问题讨论】:
getMyOrderList()
不返回任何内容。添加return
语句。
【参考方案1】:
getMyOrderList
缺少 return
语句,因此抱怨类型“void”。
getMyOrderList()
return this.courseService.getMyOrderList(this.user.uid).snapshotChanges().pipe(first());
【讨论】:
以上是关于订阅 behviorSubject 中的 observable:出现错误的主要内容,如果未能解决你的问题,请参考以下文章
iOS 11. KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_
iOS 11. KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_