首页 > 解决方案 > 不管 observables 是否存在都运行代码,但如果存在则等待它们?

问题描述

我有以下代码:

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

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

标签: angulartypescriptforeachobservableangular10

解决方案


您可以根据您的条件创建一个数组,Observables然后添加另一个数组,of(true)以确保如果没有Observables添加到数组中,combineLatest运算符仍然可以工作。您的函数function1()并且function2()必须返回一个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();
});

推荐阅读