gpt4 book ai didi

angular - 在 Ionic 2/Angular 2 中解决某些 Promise 后如何返回 Observable?

转载 作者:太空狗 更新时间:2023-10-29 16:56:58 25 4
gpt4 key购买 nike

我试图在我的 Promise 成功完成后返回一个 Observable,但该函数没有返回 Observable。具体到代码,我想从存储中获取 auth token (返回 promise ),然后在获取数据之后生成对 Api 的 Post 请求(返回 Observable)。通过这样做,sublime text 会在函数上给出一个错误,即“声明类型既不是‘void’也不是‘any’的函数必须返回一个值”下面是我的代码,

logout() : Observable<any>{
this.userData.getAuthToken().then((token)=>{
this.token = token;
this.headers = new Headers ({
"X-USER-TOKEN": token
});
this.options = new RequestOptions ({
headers: this.headers
});
var logout_url = "Api logout method";
return this.http.post(logout_url,{},this.options)
.map (res => res.json())
});
}

如果我只是简单地做一个 post 请求,那么它会像这样正常返回

return this.http.post(logout_url,{},this.options)
.map (res => res.json())

但是当我尝试获取数据时,它不会从这个 post 请求返回值。任何帮助都感激不尽!提前致谢

最佳答案

使用fromPromise将 promise 转换为可观察的并使用 mergeMap将 HTTP 响应发送到组合的可观察对象中:

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

logout(): Observable<any>{
return Observable.fromPromise(this.userData.getAuthToken()).mergeMap(token => {
this.token = token;
this.headers = new Headers({
"X-USER-TOKEN": token
});
this.options = new RequestOptions({
headers: this.headers
});
var logout_url = "Api logout method";
return this.http.post(logout_url, {}, this.options).map(res => res.json());
});
}

关于angular - 在 Ionic 2/Angular 2 中解决某些 Promise 后如何返回 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41585514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com