首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角6-链式API调用不被触发

角6-链式API调用不被触发
EN

Stack Overflow用户
提问于 2018-08-01 15:19:25
回答 1查看 41关注 0票数 0

我试图创建一个认证系统,它分两部分工作。

首先,我需要使用用户名和密码进行调用,如果这是有效的,它将返回一个代码。

此代码用于检查它是否有效,如果有效,则由我认证的用户进行身份验证。

这个调用应该得到以下代码:

代码语言:javascript
复制
  requestAuthCode(request: models.AuthenticationRequest): Observable<any> {
    return this.httpClient
      .get<any>(environment.auth.authorize, {
        headers: headers,
        params: params
      })
      .pipe(
        tap(val => this.authenticate(val.code)),
        catchError(error => this.handleError(error))
      );
  }

此调用检查代码是否有效并对用户进行身份验证。

代码语言:javascript
复制
  authenticate(code: string): Observable<any> {
    return this.httpClient
      .post<models.AuthenticationTokenResponse>(
        environment.auth.token,
        null,
        {
          headers: headers,
          params: params
        }
      )
      .pipe(
        tap(data => this.setSession(data)),
        catchError(error => this.handleError(error))
      );
  }

目标

如果requestAuthCode在它的响应中获得一个代码,我希望它启动authenticate调用,否则它必须返回一个错误。

但是当我使用

代码语言:javascript
复制
this.authService.requestAuthCode(request)
        .subscribe(
          data =>  {
            console.log(data);
          }

我只是从我的requestAuthCode获得响应数据,而不是从链式authenticate调用中获得响应数据。我还可以看到,authenticate并没有被触发。

如何实现requestAuthCode触发authenticate并将数据返回给组件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 15:22:40

马蹄

代码语言:javascript
复制
  tap(val => this.authenticate(val.code)),

试一试

代码语言:javascript
复制
 switchMap(val => this.authenticate(val.code)),
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51636953

复制
相关文章

相似问题

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