运行 不考虑存在的可观察对象的代码,但如果它们存在则等待它们?

Running code regardless of observables existing, but waiting for them if they do?

我有以下代码:

    array1.foreach(a => {
      if (a === whatever) {
        function1.subscribe();
      }
    });
    array2.foreach(b => {
      if (b === whatever) {
        function2.subscribe();
      }
    });
    function3();

如何确保 function3 总是被调用,但是如果 function1 and/or function2 被调用,它只会在 Observables 完成后被调用?

您可以根据您的条件创建一个 Observables 数组,然后添加另一个 of(true) 以确保如果没有 Observables 添加到数组中,combineLatest 运营商无论如何工作。您的函数 function1()function2() 必须 return 和 Observable.

const requestsArr: Observable<any>[] = [];

array1.foreach(a => {
 if(a === whatever){
  requestsArr.push( function1() );
 }
});

array2.foreach(b => {
 if(b === whatever){
  requestsArr.push( function2() );
 }
});

requestsArr.push( of(true) );

combineLatest(requestsArr).subscribe( (values: any[]) => {
    ...//do something with values
    function3();
});