我很努力应付处理我的应用程序,这是写在Angular2/ionic2本地存储数据的异步检索。链接承诺,以应付来自this.storage.get()调用异步承诺
我的代码如下:
request(args) {
var headers = new Headers();
headers.append('Content-Type', 'application/json');
// Retrieve the token from the local storage, if available
this.storage.get('token').then((value) => {
headers.append('Authorization', 'Token ' + value);
});
args = args || {};
var url = this.API_URL + args.url;
var method = args.method;
var data = args.data || {};
var options = new RequestOptions({headers: headers, withCredentials: this.use_session});
return new Promise((resolve,reject) => {
if (method == 'GET') {
this.http.get(url, options)
.map(res => res.text())
.subscribe(
(data:any) => {
resolve(data);
},
(err:any) => {
data = {};
data['status'] = 0;
data['non_field_errors'] = ["Could not connect to server. Please try again."];
data['error'] = err;
reject();
},
() => {
}
);
}
});
}
调用请求函数的代码如下所示:
authenticationStatus(){
return this.request({
'method': "GET",
'url': "/user/"
})
.then((data:any) => {
console.log('****** authenticationStatus: GET /user/ SUCCESS');
});
}
,这是又被称为是这样的:
this.djangoAuth.authenticationStatus()
.then((data:any) => {
this.loggedIn = true;
this.enableMenu(true);
this.root = PhotoPage;
},
(err:any)=>{
this.loggedIn = false;
this.enableMenu(false);
this.root = LoginPage;
});
我有困难的包裹我的头周围嵌套的承诺,不能工作了如何修改上面的代码,以便this.storage.get("token")
调用的结果在下面的代码中使用之前已将数据添加到标题中。我认为我需要以某种方式将承诺链接起来,但不能确切地说明如何。
本地localStorage的访问添加
else
部分是同步的......不知道为什么你的被包裹在承诺 – charlietfl这不是原生它是angularjs /离子 –
这两个框架都使用本机javascript – charlietfl