Привет, Эшвин!

Отлично, я использую эту логику. Но мне нужно сделать один HTTP-вызов для всех отсутствующих ключей вместо нескольких вызовов. Я изменю вызов службы к API, чтобы он возвращал массив наблюдаемых (тип возврата: Observable<any>[]). Я новичок в Rx, так что можете ли вы\кто-нибудь помочь мне, как объединить массив данных, возвращаемый из API, в основной список.

Ниже приведен код, который я пытаюсь использовать, но он не работает.

getMuliple<T>(keys: string[], fallback?: Observable<T>, maxAge: number = this.DEFAULT_MAX_AGE): Observable<T> | Subject<T> {
  const keysNotExist: string[] = [];
  const datas = keys.map(key=> {
     if (this.hasValidCachedValue(key)) {
        console.log(`%cGetting from cache ${key}`, 'color: green');
        let ne = Observable.of(this.cache.get(key).value);
        return ne;
     }
     if (this.inFlightObservables.has(key)) {
        let ne = this.inFlightObservables.get(key);
        return ne;
     }
     if (fallback && fallback instanceof Observable) {
        let subject = new Subject();
        this.inFlightObservables.set(key, subject);
        //If not exist in any of this need to make API call, so adding  this tag to an array to make a consoliated call
        keysNotExist.push(key);
        return subject;
     }
  }); //Loop ends to get data for cache
  let merged: Observable<any>;
  if (keysNotExist.length > 0 && fallback && fallback instanceof Observable) {
    console.log(`%c Calling api for ${keys.join(',')}`, 'color: purple');
    merged = fallback.do(value => {
       let da: any[] = [];
       for (let key in value) {
          this.set(key, value[key], maxAge);
       }
    });
    //Observable.forkJoin(fallbackRet, datas);
  } 
  //let returnData = Observable.concat(datas, merged);
  return null; //Don't know what to return here.
}
this.set(key, value[key], maxAge);
}
});
//Observable.forkJoin(fallbackRet, datas);
}
//let returnData = Observable.concat(datas, merged);
return null; //Don't know what to return here.
}