如何根据发出的可观察对象执行方法?但一开始,我需要依赖这两个可观察量

How do I execute methods based on which observable is emitted? But at first, I need to depend on both the observables

 combineLatest(data$, order$).subscribe(([data, order]: any) => {
  if (order && data) {
    this.setData(data);
    this.setOrder(order);
  }
});

目前的情况是-我们等待data$order$到return observables-数据和顺序,并使用 dataorder,我们执行两种方法- this.setData(数据)this.setOrder(顺序);

this.setOrder(order)最初取决于this.setData(data)

我的期望是,在 ngOnInit 上最初有相同的行为,但是在连续发射可观察对象时(由于状态变化(在 ngOnInit 内触发))-
像-

if change in data${
    Dont call this.setOrder(order); call this.setData(data);
}and if change in order${
    Dont call this.setData(data); call this.setOrder(order);
}

提前谢谢你。

如果您使用 combineLatest,那么您会丢失关于哪个 observable 发出了值的信息,因为 combineLatest 将从所有源 observable 发出最新值(假定两者至少发出一个值)。为了克服这个问题,并且仍然保持你的行为(setData 和 setOrder 都可用时),你可以这样做:

const orderData$ = combineLatest(data$, order$).pipe(
  filter(([data, order]) => !!data && !!order),
  first()
);

data$.pipe(skipUntil(orderData$)).subscribe(data => {
  this.setData(data);
});
order$.pipe(skipUntil(orderData$)).subscribe(order => {
  this.setOrder(order);
});

orderData$.subscribe(([data, order]) => {
  this.setData(data);
  this.setOrder(order);
});

The skipUntil operator 导致 observable 流跳过值的发射,直到传入的 observable 发射第一个值。