2017-07-18 15 views
2

ObservableとPromises in Angularについて完全にそして簡単に知りたいです。誰かが簡単な例で私に電話をしてくれてありがとう。ObservableとPromise in Angular 4の簡単な定義

+2

非常に幅広い質問ですが、より具体的な質問をすることはできますか? –

+1

Observableであり、Promisesは角度固有ではありません。また、このhttps://stackoverflow.com/questions/37364973/angular-promise-vs-observable/37365955#37365955の可能な複製 – brijmcq

答えて

2

あなたは、彼は非常に簡単な方法でそれを説明し@Gunterからこの答えを見ることができます

https://stackoverflow.com/a/37365955/2708210

わずか2

観察可能

getLukeSkywalkerObservable(){ 
    return this.http.get('http://swapi.co/api/people/1/') 
     .map(res => { 
     return res.json(); // using maps to filter data returned form the http call 
     }).map(data => { 
     return data; // using maps of maps to filter data returned form the map 
     }).flatMap((jedi) => this.http.get(jedi.homeworld)) 
     .map(res => { 
     return res.json().name; // using flat maps to combine data returned from two observables into one 
     }).catch((error:any) => Observable.throw(error.json().error || 'Server error')); 
    } 
のためのサンプルコードを追加します

約束

getLukeSkywalkerPromise(){ 
    return this.http.get('http://swapi.co/api/people/1/').toPromise() 
     .then((data) => { 
     console.log(data); // binding the result from the promise 
     return data.json(); 
     }).then((data) => { 
     console.log(data.name); // more like map of map but limited functionality 
     return data.name; 
     }).catch((ex) => { 
      console.error('Server Error'+ex); 
     }) 
    } 
2

ここでhttpの角度のドキュメントを通して読むことlinkこの回答はDocsからのものです。

Angular http.getはRxJS Observableを返します(1リクエストで1レスポンスなのでObservableは必要ありません) Observableは配列のような演算子で処理できるイベントのストリームです。 プロミスに変換するのが良い選択です。通常、http.get()にデータの単一のチャンクをフェッチするように依頼します。データを受け取ったら、完了です。呼び出し元のコンポーネントは、Promiseの形式で単一の結果を簡単に使用できます。 ... /アプリ/ http.service.ts _http.get()はそれにチェーン2つの機能、.map.toPromise()を持っていることを

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 
@Injectable() 
export class HttpService { 

constructor(private _http: Http) { } 
retrieveTasks() { 
    return this._http.get('/tasks').map(data=>data.json()).toPromise() 
    } 
} 

お知らせ:

は、ここで簡単な例です。 .mapメソッドは、返されたオブジェクトをHTTP要求からjson形式のオブジェクトに変換するために使用され、.toPromiseメソッドは、Observableの代わりに_http.get()呼び出しがPromiseを返すように強制します。基本的なHTTPリクエストでObservableの利点を利用する必要はなく、Promisesでもっとクリーンでシンプルに保つことができます。

関連する問題