Angular Behaviorsubject和of()的行为方式完全不同

Angular Behaviorsubject和of()的行为方式完全不同,angular,rxjs,observable,angular9,behaviorsubject,Angular,Rxjs,Observable,Angular9,Behaviorsubject,我正在尝试创建一个观察对象的处理链,其中第一步必须是我需要调用的主题。下一步。使用works,但返回一个可观察的,使用BehaviorSubject应该有类似的效果,但它不起作用:使用perfectly works和订阅创建的可观察的通过管道带来数据并返回修改后的数据,而对于behaviorsubject,数据保留在subject中,订阅永远不会获取数据 例如: getProcessed(processed: string = null, identifier = 'default'): Obs

我正在尝试创建一个观察对象的处理链,其中第一步必须是我需要调用的主题。下一步。使用works,但返回一个可观察的,使用BehaviorSubject应该有类似的效果,但它不起作用:使用perfectly works和订阅创建的可观察的通过管道带来数据并返回修改后的数据,而对于behaviorsubject,数据保留在subject中,订阅永远不会获取数据

例如:

getProcessed(processed: string = null, identifier = 'default'): Observable<any> {
  const bs = new BehaviorSubject(this.start.data);
  this.localFilterSub.set(identifier, bs);
  this.localFilterObs.set(identifier, bs.asObservable());
  this.localFilterSet.set(identifier, {});
  this.process(processed, identifier);
  return this.localFilterObs.get(identifier);
}

process(name: string, identifier = 'default') {
  this.localFilterObs.set(identifier, this.doProcess(name, identifier));
}


private doProcess(name: string, identifier = 'default'): Observable<any>|Subject<any> {
  if (name) {
    const inst = new Op();

    const obss = [];
    obss.push(this.localFilterObs.get(identifier));
    obss.push(inst.getExternal());

    return forkJoin(obss).pipe(
      tap((data) => {
        console.log(name, data);
      }),
      map((data) => {
        return inst?.run(data);
        // this.done.push(name);
      }),
      tap((data) => {
        console.log(name, data);
      }),
    );
  } 
}

我真的不明白我做错了什么。

直到所有的观测都完成,forkJoin才会发射。of将立即完成,但行为主体在您调用complete之前不会完成。使用CombineTest,它将在所有可见光发射后发射

const{BehaviorSubject,of,forkJoin}=rxjs; const bs$=新行为主体“bs”; o$=of' forkJoin[bs$,o$].subscriberes=>{console.logres;}; console.log'Nothing as bs$notcomplete'; setTimeout=>{bs$.complete;},2000;
但它不起作用意味着什么?什么不起作用?你期望发生什么,实际发生了什么?行为主体的行为方式与使用of创建的可观察对象的行为方式不完全相同。为什么?使用of创建的可观察对象将是具有给定数据集的可观察对象,行为主体将是一个可观察对象,在订阅数据后立即发出数据。为什么会有区别呢?我同时编辑了这个问题。