2017-05-11 34 views
0

私はAngular 4とObservableについて簡単に質問します。 私のプログラムにはコンポーネントがあり、これはAPIに送るべきもののリストを作成します。 第二に、私は要素( "事" - >一つ!)を取得し、それをapiに送り、Observableを返すサービスを持っています。 Here'sコード: コンポーネント:角度4観測可能なフォーク結合配列

saveTimers() { 
    // gehe alle selektierten Timer durch und lege Sie an 
    let timerSuccess = []; 
    let timerFailed = []; 
    let timers = []; 
    for (let epgEntry of this.searchResult) { 
     if (epgEntry.checked) { 
      let timer = new Timer; 
      // magic 
      this.timerService.saveTimer(timer). 
       subscribe(
       data => { 
        console.log(data); 
        if (data === true) { 
         timerSuccess.push(timer); 
        } else { 
         timerFailed.push(timer); 
        } 
       }, 
       error => { this.variables.setFailure(error); } 
       ); 
     } 
     } 
//both empty, because api didn´t return yet 
     console.log(timerSuccess); 
     console.log(timerFailed); 
     if (timerSuccess.length > 0) { 
      this.variables.setSuccess('Timer erfolgreich angelegt'); 
     } 
     if (timerFailed.length > 0) { 
      this.variables.setFailure('Timer konnte(n) nicht angelegt werden'); 
     } 
    } 

サービス:

saveTimer(timer: Timer): Observable<boolean> { 
// magic --> returns an observable 
} 

今の質問:私はすべてのAPI呼び出しを行うために(コンポーネントで)Observable.forkJoin()を使用する方法1回(btwはすべてのapi呼び出しを待つ)?

ありがとうございます!このような

答えて

1

何か:あなたが送信したいあなたの価値を組み合わせた最初のforkjoinで

Observable.forkJoin(Observable.of(YOUR_ARRAY), saveTimer(timer: Timer)) 
    .switchMap(joined => Observable.forkjoin(http.post(joined[0]), http.post(joined[1]))) 
    .subscribe(); 

。 2つ目は、2つのapi呼び出しの結果を組み合わせることです。

+0

ありがとう! しかし、私はこれを置く必要があります...?サービスへの呼び出しの代わりにコンポーネント内で? しかし、 'saveTimer(timer:Timer)は動作しません... – Junias

関連する問題