В документации Observables forkJoin говорится, что args может быть массивом, но в нем не приведен пример этого:
https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md
Я пробовал функцию, аналогичную той, что я перечислил (ниже), но обнаружил ошибку:
:3000/angular2/src/platform/browser/browser_adapter.js:76
EXCEPTION: TypeError: Observable_1.Observable.forkJoin is not a function
Обрезанная версия моей функции ниже:
processStuff( inputObject ) {
let _self = this;
return new Observable(function(observer) {
let observableBatch = [];
inputObject.forEach(function(componentarray, key) {
observableBatch.push(_self.http.get(key + '.json').map((res: Response) => res.json()));
});
Observable.forkJoin(
observableBatch
// );
).subscribe(() => {
observer.next();
observer.complete();
});
});
}
Корень моего вопроса связан с завершением цикла, прежде чем продолжить, как указано здесь: Angular2 Observable - как дождаться завершения всех вызовов функций в цикле, прежде чем продолжить?
Но я еще не полностью освоил правильное использование forkJoin с массивом и правильный синтаксис для этого.
Я очень благодарен за вашу помощь.
ПРИМЕЧАНИЕ: ПРИМЕР ТРЕТЬЕЙ ФУНКЦИИ, ВОЗВРАЩАЮЩЕЙ НАБЛЮДАЕМУЮ
thirdFunction() {
let _self = this;
return Observable.create((observer) => {
// return new Observable(function(observer) {
...
observer.next(responseargs);
observer.complete();
});
}
processStuff(inputObject) {
let _self = this;
let observableBatch = [];
inputObject.forEach((componentarray, key) => {
observableBatch.push(_self.thirdFunction().map((res: Response) => res.json()));
});
return Observable.forkJoin(observableBatch);
}
elsewhere() {
this.processStuff(inputObject)
.subscribe()
}
Observable.forkJoin([http.get(), http.get(), http.get(), etc]).subscribe((res) => ...)
См. Также stackoverflow.com/a/35247372/4933038 - person Eric Martinez   schedule 28.02.2016import 'rxjs/add/observable/forkJoin'
илиimport 'rxjs/Rx'
? - person Sasxa   schedule 28.02.2016