首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回修正的可观测值角6

返回修正的可观测值角6
EN

Stack Overflow用户
提问于 2018-10-05 15:03:55
回答 1查看 441关注 0票数 1

请考虑以下示例:

代码语言:javascript
复制
 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()完成其任务时,如何解决此类问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-05 15:11:53

使用映射算子修改可观察到的值:

代码语言:javascript
复制
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;
    })
  );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52668499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档