相关疑难解决方法(0)

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
Run Code Online (Sandbox Code Playgroud)

我的功能的剪切版本如下:

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

  });
}
Run Code Online (Sandbox Code Playgroud)

我的问题的根与循环结束有关,然后按此处的要求继续:Angular2 Observable - 如何在循环之前等待循环中的所有函数调用结束?

但我还没有完全掌握forkJoin与数组的正确用法以及正确的语法.

我非常感谢您提供的帮助.

注意:返回可观察的第三功能示例

thirdFunction() {
  let _self = this;

  return Observable.create((observer) => {
  // return new Observable(function(observer) {
    ...

    observer.next(responseargs);
    observer.complete();
  });
}

processStuff(inputObject) …
Run Code Online (Sandbox Code Playgroud)

fork-join observable angular

39
推荐指数
1
解决办法
6万
查看次数

Angular2 http缺少.map函数

我在教程中找到了这个示例代码:

getRandomQuote() {
  this.http.get('http://localhost:3001/api/random-quote')
    .map(res => res.text())
    .subscribe(
      data => this.randomQuote = data,
      err => this.logError(err),
      () => console.log('Random Quote Complete')
    );
}
Run Code Online (Sandbox Code Playgroud)

但是当试图使用它时,我只得到TypeError: this.http.get(...).map is not a function in [null]:

getChannels():Promise<Channel> {
    return this.http.get('...')
        .map(function (response:Response) {
            ...
        }).toPromise();
}
Run Code Online (Sandbox Code Playgroud)

我的Typescript编译器告诉我这些方法是可用的,但是当检查http.get()它们的返回值时,它们就丢失了.

我使用了当前angualar2入门指南的package.json:

"dependencies": {
  "angular2": "2.0.0-beta.0",
  "systemjs": "0.19.6",
  "es6-promise": "^3.0.2",
  "es6-shim": "^0.33.3",
  "reflect-metadata": "0.1.2",
  "rxjs": "5.0.0-beta.0",
  "zone.js": "0.5.10"
},
Run Code Online (Sandbox Code Playgroud)

...

<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/http.dev.js"></script>
Run Code Online (Sandbox Code Playgroud)

在这一点上我有什么想法可能会出错?

typescript angular

13
推荐指数
2
解决办法
2万
查看次数

角度1.x $ q到Angular 2.0 beta

想要将以下服务转换为Angular 2服务.我在这里使用谷歌api.我得到的主要问题是返回Promise,因为它与Angular 1.x不相似.

 getLoginStatus: function () {
      var deferred = $q.defer();
      gapi.auth.authorize({client_id: dataStore.getData('CLIENT_ID'), scope: dataStore.getData('SCOPES'), immediate: true},function(response){
      var res = {};
           res = response;
           deferred.resolve(res);
      });
      return deferred.promise;
 }
Run Code Online (Sandbox Code Playgroud)

service promise angularjs angular

3
推荐指数
1
解决办法
298
查看次数