请考虑以下示例:
login(context: LoginContext): Observable<Credentials> {
let credentials = JSON.stringify(context);
this.httpClient.post("http://localhost:64636/api/Account/login", credentials, {
headers: new HttpHeaders({
"Content-Type": "application/json"
})
}).subscribe(response => {
let token = (<any>response).token;
const data = {
username: context.username,
token: token
};
this.setCredentials(data, context.remember);
return of(data);
}, err => {
});
}在这里,我试图实现的是封装从httpClient接收到的数据并返回数据,但是这是在httpClient执行完成之后完成的。编译器告诉我,“声明类型既不是'void‘也不是'any’的函数必须返回值”,这是正确的。我的问题是,当可观察的父级必须等待可观察的httpClient.post()完成其任务时,如何解决此类问题?
发布于 2018-10-05 15:11:53
使用映射算子修改可观察到的值:
login(context: LoginContext): Observable<Credentials> {
let credentials = JSON.stringify(context);
return this.httpClient.post("http://localhost:64636/api/Account/login", credentials, {
headers: new HttpHeaders({
"Content-Type": "application/json"
})
}).pipe(
map(response => {
let token = (<any>response).token;
const data = {
username: context.username,
token: token
};
this.setCredentials(data, context.remember);
return data;
})
);
}https://stackoverflow.com/questions/52668499
复制相似问题