Я хотел бы объединить наблюдаемые в один, а затем подписаться, когда ВСЕ субъекты выдали значение. Пока что пробовал Observable.merge и Observable.zip
public A:Subject<any> = new Subject();
public B:Subject<any> = new Subject();
public C:Subject<any> = new Subject();
public D:Subject<any> = new Subject();
public Complete:Subject<any> = new Subject();
A.next(true);
B.next(true);
C.next(true);
D.next(true);
Observable.zip(A,B,C,D).subscribe(res=>{Complete.next(true)})
Но если я сделаю это выше, я думаю, что подписчик будет слушать любой из A, B, C или D, при условии выдачи значения, а не ВСЕ. Каким будет способ подождать, пока A, B, C и D не выдадут значение?