Javascript 当第二个可见变化时,CombineTest不发射?

Javascript 当第二个可见变化时,CombineTest不发射?,javascript,typescript,rxjs,Javascript,Typescript,Rxjs,有两个可观察对象-活动$-集合$: const central:EStore<Todo> = new EStore(); const collection:EStore<Todo> = new EStore(); const active$ = central.observeActive(); const collection$ = collection.observe(); 此CombineTest功能不会触发: const isActiveTodoInCollec

有两个可观察对象-
活动$
-
集合$

const central:EStore<Todo> = new EStore();
const collection:EStore<Todo> = new EStore();
const active$ = central.observeActive();
const collection$ = collection.observe();

CombineTest
功能不会触发:

const isActiveTodoInCollection$:Observable<boolean> = 
     combineLatest(active$, 
                   collection$, 
                   (a, c)=>{
                     console.log("Firing");
      if (getMapValue(central.active)) {
             return collection.containsById(getMapValue(central.active));
      }
      return false;               
});


但是,如果我们将
活动$
可观察变量添加到参数中,它将停止通知。这就好像
活动$
必须首先通知…

组合测试只有在每个观察对象至少发出一次值时才起作用

central.post(todo)并没有真正完成,因为在您的例子中,observeative()只在调用central.addActive(todo)时才真正观察,因此没有任何东西可以组合

示例为了说明这个问题,请在下面的代码中注释两个$,并取消对下一行的注释,您将看到区别

import { combineLatest, Observable } from "rxjs";

const one$ = new Observable(subscriber => {
  setTimeout(() => {
    console.log("set");
    subscriber.next(42);
  }, 1000);
});

const two$ = new Observable(subscriber => {});

// comment above two$ and uncomment this
/*const two$ = new Observable(subscriber => {
  subscriber.next(56);
});*/

combineLatest(one$, two$).subscribe(([one, two]) => {
  console.log(
    ` One Latest: ${one},
      Two Latest: ${two}`
  );
});

CombineTest仅在每个可观察对象至少发出一次值时才起作用。我认为在您的例子中,observeative()只有在调用central.addActive(todo)时才会触发;你搞定了-很棒的观察-谢谢!
const t$ = combineLatest(collection$, (c)=>console.log("collection$ performing a notification"));

t$.subscribe();
import { combineLatest, Observable } from "rxjs";

const one$ = new Observable(subscriber => {
  setTimeout(() => {
    console.log("set");
    subscriber.next(42);
  }, 1000);
});

const two$ = new Observable(subscriber => {});

// comment above two$ and uncomment this
/*const two$ = new Observable(subscriber => {
  subscriber.next(56);
});*/

combineLatest(one$, two$).subscribe(([one, two]) => {
  console.log(
    ` One Latest: ${one},
      Two Latest: ${two}`
  );
});