Angular入門者です。
あるサーバ1で取得した値をもとに、別のサーバ2から値をとりたいような場合、
どのように記述するのが正しいのでしょうか?
以下のようなコードを書いてみたのですが、
サーバ1へのリクエストが返ってくる前に
サーバ2へのリクエストが実行されてしまうからなのか、うまくいきません。
サーバ1の結果が終わったのを待って、次の処理を進めるみたいな処理を
どう記述するかを教えてください。
ど素人質問で申し訳ありませんが、よろしくお願いします。
typescript
1import { Injectable } from '@angular/core'; 2import { Subject } from 'rxjs/Subject'; 3import { Http } from '@angular/http' 4import { Observable } from 'rxjs' 5 6@Injectable() 7export class SampleService { 8 9 constructor(private http: Http) { } 10 11 getNames(){ 12 let url1 = 'http://path.to/server1'; 13 let url2 = 'http://path.to/server2'; 14 15 let ret = new Subject<any> (); 16 17 // サーバ 1 からIDを取得 18 let idlist = []; 19 this.http.get(url1).subscribe( 20 (res: any) => { 21 for(let i = 0; i < res.result.length; i++){ 22 idlist.push(res.result[i].id); 23 } 24 }, 25 error => { 26 console.log('error'); 27 } 28 ) 29 30 // サーバ 1 で取得したIDをキーにサーバ 2 から名前を取得 31 let namelist = []; 32 for(let i = 0; i < idlist.length; i++){ 33 this.http.get(url2 + '?id=' + idlist[i]).subscribe( 34 (res: any) => { 35 namelist.push(res.result.name); 36 }, 37 error => { 38 console.log('error'); 39 } 40 ) 41 } 42 43 ret.next(namelist); 44 ret.complete(); 45 46 } 47 48} 49
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。