angular – Observable.forkJoin和数组参数

前端之家收集整理的这篇文章主要介绍了angular – Observable.forkJoin和数组参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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 – how to wait for all function calls in a loop to end before proceeding?

但是我没有完全掌握正确使用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()
}
您需要导入默认加载的操作符。这就是EXCEPTION Observable.xxxx通常不是一个功能。您可以通过将完整的rxj添加到引导程序中来导入所有运算符,例如:
import 'rxjs/Rx'

或在您的情况下导入特定的操作符:

import 'rxjs/add/observable/forkJoin'

关于你的代码的另一个观察/建议:尝试坚持一个语法。你正在混合es5,es6,typescript …,而它的工作,只会混淆你从长远来看。此外,如果您刚刚从Observables开始,请尝试避免使用新的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 v5和您提供的链接是为RxJS v4。对于v5,文档仍然不完整,但您可以在许多源文件中找到描述。

原文链接:https://www.f2er.com/angularjs/144182.html

猜你在找的Angularjs相关文章