Angular Observable.forkJoin和数组参数

Angular Observable.forkJoin和数组参数,angular,observable,fork-join,Angular,Observable,Fork Join,在Observables forkJoin文档中,它说args可以是数组,但没有列出这样做的示例: 我尝试了一个类似于我在下面列出的函数,但出现了一个错误: :3000/angular2/src/platform/browser/browser_adapter.js:76 EXCEPTION: TypeError: Observable_1.Observable.forkJoin is not a function 下面是我的函数的剪切版本: processStuff( inputObj

在Observables forkJoin文档中,它说args可以是数组,但没有列出这样做的示例:

我尝试了一个类似于我在下面列出的函数,但出现了一个错误:

: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();
    });

  });
}
我的问题的根源与继续之前的循环有关,如下所述:

但是我还没有完全掌握forkJoin在数组中的正确用法和正确语法

我非常感谢你能提供的帮助

注:第三个函数的示例,返回一个可观察的
您需要导入默认情况下未加载的运算符。这就是异常可观察性的含义。xxxx不是一个函数。您可以通过将complete
rxjs
添加到引导程序来导入所有运算符,例如:

import 'rxjs/Rx'
或通过导入特定运算符,在您的情况下:

import 'rxjs/add/observable/forkJoin'
关于代码的另一个观察/建议是:尝试使用一种语法。您正在混合es5、es6和打字脚本。。。而当它工作时,从长远来看,它只会让你感到困惑。此外,如果您刚开始使用Observable,请尽量避免使用
new Observable()
,而是使用创建操作符

processStuff( inputObject ) {
  let observableBatch = [];

  inputObject.forEach(( componentarray, key ) => {
    observableBatch.push( this.http.get( key + '.json').map((res: Response) => res.json()) );
  });

  return Observable.forkJoin(observableBatch);
}

elsewhere() {
  this.processStuff( inputObject )
    .subscribe()
}

最后,请参阅正确的文档-Angular2使用了RxJS v4,您提供的链接也适用于RxJS v4。v5的文档仍然不完整,但您可以在许多源文件中找到描述。

Observable.forkJoin([http.get(),http.get(),http.get(),http.get()等])。订阅((res)=>…)
另请参见您是否忘记了导入“rxjs/add/Observable/forkJoin”或
导入“rxjs/Rx”
?我刚刚有了这个导入{Observable}来自“rxjs/可观察”;请看,其他运算符/生成器也是如此..Hi@Sasxa我遇到了问题,因为我使用的是第三个函数,而不是这个.http.get(…您能提供一个例子,说明第三个函数返回新的可观察函数(函数(观察者))吗{我已经编辑了我的原始帖子来展示一个示例。非常感谢您的帮助。解决了它-第三个函数需要这个:returnobservable.create((observer)=>{…observator.next(“test”);observator.complete();我喜欢这个解决方案。我不知道的是,当大多数请求成功时,如何处理一些请求上的错误?我上一个版本应该是“return-forkJoin(observebatch)”而不是“return-observeable.forkJoin(observebatch)”@Volodymyr答案是与angular 7+兼容的答案,导入是
import{-forkJoin}来自“rxjs”;
processStuff( inputObject ) {
  let observableBatch = [];

  inputObject.forEach(( componentarray, key ) => {
    observableBatch.push( this.http.get( key + '.json').map((res: Response) => res.json()) );
  });

  return Observable.forkJoin(observableBatch);
}

elsewhere() {
  this.processStuff( inputObject )
    .subscribe()
}