【发布时间】:2018-10-12 10:06:46
【问题描述】:
我正在尝试从一个使用 rxjs 调用 API 的函数返回一个值(一个字符串)。该变量必须在 observable 的完整子句中返回。
这是代码:
getToken(): any {
let token = '';
this.meService.getMe().subscribe(data => {},
err => {
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8').set(InterceptorSkipHeader, '');
this.http.post(Configs.heroku + 'https://login.microsoftonline.com/common/oauth2/v2.0/token', 'grant_type=authorization_code&code=' + localStorage.getItem('refresh') + '&client_id=' + Configs.appId + '&redirect_uri=http://localhost:4200/redirect&' + 'client_secret=lkcqTNT730}zyoVLOX45)|;', {headers: headers}).subscribe(data => {
localStorage.setItem('access', data['access_token']);
token = localStorage.getItem('access');
});
},
() => {
return localStorage.getItem('access');
});
}
如您所见:我试图在完整子句中返回一个变量。但是,它从不返回变量。当我在调用函数中打印出来时,它只是说未定义。有什么解决办法吗?
提前致谢!
编辑:
这是函数被调用的部分:
console.log(auth.getToken());
req = req.clone({
setHeaders: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': 'Bearer ' + auth.getToken()
}
});
【问题讨论】:
-
返回到什么,究竟是什么?您的外部方法不返回任何内容。
-
是的,我想从我的“完整条款”中返回。如您所见,那里有回报。
-
是的,我可以看到,但目前还不清楚你期望它去哪里。返回到什么?
-
我编辑了我的问题。我希望 'auth.getToken()' 返回 return 语句中指定的值。
-
你还没有理解异步(RxJs/Promise)JavaScript 编程是如何工作的。
标签: angular asynchronous rxjs observable