2017-07-28 6 views
2

私はPythonの世界から来ており、Angular/ts/jsのプログラミング方法の初心者です。角度プロミス:値を得ることができない

Ionic storage.get()メソッドは、Promiseを返します。 httpクエリで送信するためにトークンの価値をどのように取得する必要がありますか?もちろん

get(url: string): Observable<Response> { 
    let token = ""; 
    this.storage.get('token') 
     .then(token => token = token); 

    return this.http.get(url, { "Authorization" : token}); 
} 

は、リクエストトークンと葉=「」の代わりにバック約束解像度の後に来ている必要があります1:今のところ

は、私はこの障害のあるブロックをしようとしています。

プロミスではthen()catch()以外の方法はありません。私は、次のコードを考えた:

get(url: string): Observable<Response> { 
    return this.storage.get('token').then(
    token => { 
     return this.http.get(url, { "Authorization": token }) 
); 
}); 

しかし、その後は、get(url)Promise<Observable<Response>>代わりのObservable<Response>返し、これは非常に私を助けていません。

回答者がdefer($ q https://docs.angularjs.org/api/ng/service/ $ q)を使用している場合は、このクラスをどのように角度/イオンにインポートすることができますか?

はご協力いただきありがとうございます:)

答えて

0

いいえ、$qが約束に対処するためにAngularJSで使用されています。ここでAngularではObservableを使用します。

約束をObservableに変換してflatMapを変換すると、ResponseタイプのObservableが最終的に返されます。

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/fromPromise'; 

get(url: string): Observable<Response> { 
    let token = ""; 
    return Observable.fromPromise(this.storage.get('token')) 
     .flatMap(token => this.http.get(url, { "Authorization" : token})); 
} 
+0

こんにちはpankaj-parkar。ご回答有難うございます。私は "[ts] Property 'fromProromise'が 'typeof Observable'型に存在しません。"私はできるだけ早く修正しようとしますが、ヒントがあれば歓迎します:) – Paul

+0

@PaulはObservableのインポートを追加しましたか? –

+0

はい、私はこれらの2行を私のコードに入れています: 'import {Observable} from 'rxjs/Observable';import 'rxjs/add/operator/fromPromise'; 'しかし、' rxjs/add/operator'に 'fromPromise.js'というものはありませんので、これは正常です。か否か... ? – Paul

関連する問題