如何在承诺中返回请求
How return a request inside a promise
我正在使用离子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
也是非异步this.acess
令牌接收到值之前调用http.get
。
这可能有效(我自己没有尝试(:
@Injectable()
export class ApiRequest {
access_token: string;
constructor(private http: Http, public storage: Storage) {
this.storagePromise = 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.storagePromise.then(
return token => this.http.get(url, options)
.map(res => res.json());
);
}
}
apiRequest.get(this.URL)
.then(observable =>
observable.subscribe(
data => {
this.element= data;
},
err => {
console.log(JSON.stringify(err));
}
);
相关文章:
- JSONP请求返回结果,但也触发error_callback
- "日期“;AJAX请求返回的类型值未定义
- Ajax请求返回空的数据字符串,但首先得到了正确的数据
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- Ajax调用返回当前html页面,而不是请求的文件
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 如何显示从Ajax请求返回的数组.使用Yii2
- ASP.NET WebMethod将整个页面返回给JQuery ajax请求
- 使用Javascript数组或JSON来存储AJAX请求的返回值,以备将来使用
- 为什么我在Cloud9中的http请求总是返回错误
- 当jQuery返回错误时,如何在jQuery中重新发送ajax请求
- AWS API网关返回400错误请求,但Postman工作正常
- WordPress Ajax请求返回0
- Ajax请求返回模块设置数据
- 有函数返回请求数据+要执行的函数
- 在Batman.js中返回请求结果的问题
- 如何在承诺中返回请求
- Javascript没有返回请求