2017-02-06 12 views
3

Angular2で50回の反復のループを実行し、偶数回の反復でのみGETリクエストを送信するコンポーネントを作成したいとします。今度は同期G​​ET要求を送信し、偶数反復のデータが受信されない限り、ループは待機し、奇数反復には入力しないようにします。どのようにそれを行うことができるかに関する任意のアイデア?angular2の同期GETリクエスト

ここでのサービスに書かれた機能だ - `

 getUser() { 
    for(let i = 1;i < 10;i++) { 
     if (i % 2 != 0) {   
     var resp =this.http.get('https://jsonplaceholder.typicode.com/users/'+i) 
      .map(res=> res.json()); 

     if(resp){ 
     resp.subscribe(res=>{ 
     console.log(res); 
     }); 
    } 

    } 
    else{ 
    console.log("even iteration"); 
    } 
} 

は、ここで私は応答が順序も反復コンソールメッセージに来るべきnow.The問題がクリアされている願っています出力 - And here's the output -

ですその奇数の相手がオブジェクトを返したときにのみ表示されるはずです。解決策を提案してください。だから私のインストラクターの助けを借りて

+0

同期要求は、Webアプリケーションで実行できる最悪のものの1つで、Angular自体はサポートを提供していません。あなたはもちろん、通常のJS方法を使用して、必要と思われる場合はそれを行うことができます。 –

+0

状況は私にそうする必要があります。これがangular2で達成できる方法はありませんか? –

+0

Angular2とは関係ありません。 JavaScriptでそれを行う方法を検索し、Angularで同じようにします。そして、いいえ、そうする必要がある状況はありません。まともな方法がありますが、実際に解決しようとする問題についての詳細情報を提供する必要があります。 –

答えて

1

は、我々は最終的に、我々はこれらの観測をconcatented .Now観測として、我々は非同期要求を送信し、応答を返さwanted.We何達成交互にループの繰り返しに戻って、次の出力 - output

を達成しました

getUser(i: number): Observable<any>{ 
    return this.http.get('https://jsonplaceholder.typicode.com/users/' + i) 
    .map(res => res.json()); 

} 

component.ts - -

は、これは私のコード -

service.tsです

import {Component, OnInit} from '@angular/core'; 
import {AppService} from "./app.service"; 
import {Observable} from 'rxjs/Rx'; 

@Component({ 
selector: 'app', 
templateUrl: './app.component.html' 
}) 
export class AppComponent implements OnInit { 


    name:string; 
    call: Observable<any>; 

    constructor(private _service: AppService) {} 

    public ngOnInit() { 

    } 

    getUser(){ 
    this.call = Observable.concat(); 
    for(let i=1;i<=10;i++) { 
    if(i%2!=0){ 
     this.call = this.call.concat(this._service.getUser(i)); 
     } 
    else{ 
     this.call = this.call.concat(Observable.create(x=> {x.next(i)}).first()); 
     } 
    } 
     this.call.subscribe(res=>console.log(res)); 

    } 
    } 
関連する問題