加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – Observable.forkJoin和数组参数

发布时间:2020-12-17 08:07:09 所属栏目:安全 来源:网络整理
导读:在Observables的forkJoin文档中,它表示args可以是一个数组,但它并没有列出一个例子: https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md 我已经尝试了类似于我列出的功能(下面),但是出现了一个错误: :3000/a
在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,文档仍然不完整,但您可以在许多源文件中找到描述。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读