質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

Q&A

解決済

1回答

467閲覧

Angularの非同期通信で、最初のリクエストが返ってきてから次のリクエストを実行したい

kenk

総合スコア13

Angular

Angularは、JavaScriptフレームワークです。AngularJSの後継であり、TypeScriptベースで実装されています。機能ごとに実装を分けやすく、コードの見通しが良いコンポーネント指向です。

0グッド

0クリップ

投稿2018/05/26 06:26

編集2018/05/26 06:36

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

サーバ1の結果が終わったのを待って、次の処理を進めるみたいな処理を

どう記述するかを教えてください。

mergeMapを使うとシンプルに書けます。
書き方はこちらが参考になると思います!

投稿2018/05/26 06:49

xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問