Я использую ionic 2/угловой 2.Как вернуть запрос внутри обещания
Мне нужно сделать http-запрос, но прежде чем я получу токен, используя Ionic Storage.
Я создал класс ApiRequest
для этого
import {Http, Headers, RequestOptions} from '@angular/http';
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Storage } from '@ionic/storage';
@Injectable()
export class ApiRequest {
access_token: string;
constructor(private http: Http, public storage: Storage) {
this.storage.get('access_token').then((value:any) => {
this.access_token = value;
});
}
get(url) {
let headers = new Headers({
// 'Content-Type': 'application/json',
'Authorization': 'Bearer ' + this.access_token,
'X-Requested-With': 'XMLHttpRequest'
});
let options = new RequestOptions({ headers: headers });
return this.http.get(url, options)
.map(res => res.json());
}
}
Тогда я могу назвать как то
apiRequest.get(this.URL)
.subscribe(
data => {
this.element= data;
},
err => {
console.log(JSON.stringify(err));
});
Моя проблема, this.storage.get
является асинхронным, http.get
является асинхронным тоже, и я должны возвращать http.get
, потому что я хочу позвонить subscribe
вне функции.
В этом случае http.get
вызывается до того, как токен this.acess
получил значение.
Как я могу организовать свой код в этом сценарии?
Это может помочь ~ http://stackoverflow.com/questions/35498456/what-is-httpinterceptor-equivalent-in- angular2 – Phil