这是我的Http请求 在getAlluserData()中,我希望这个.getAnXSRfToken()在继续执行http请求之前完成excel;

  getAllUserData() {
    //get XSRF token
    this.getAnXSRfToken();
    return this.http
      .post<User[]>('http://localhost:8080/user/get-all-users-post', null, {
        observe: 'response',
        withCredentials: true,
      })
      .subscribe({
        next: (array) => {
          this.allUsersData.next(array.body);
        },
        error: (e) => {
          console.log(e);
        },
      });
  }

这是This.getAnXSRfToken()方法

  getAnXSRfToken() {
    return this.http
      .post<{
        parameterName: string;
        headerName: string;
        token: string;
      }>('http://localhost:8080/user/getXSRfToken', null)
      .subscribe({
        next: (tokenData) => {
          console.log('REQ --- token ---generated ');
          console.log(tokenData.token);
          this.XSRF_TOKEN.next(tokenData.token);
        },
        error: (e) => console.log(e),
      });
  }

推荐答案

删除订阅并返回可观察对象,然后您可以使用switchMap按顺序从XHR API调用切换到另一个API调用!

getAllUserData() {
    //get XSRF token
    this.getAnXSRfToken().pipe(
        switchMap(() => {
            return this.http
                .post<User[]>('http://localhost:8080/user/get-all-users-post', null, {
                    observe: 'response',
                    withCredentials: true,
                }).pipe(//array parameter was missed out 
                    tap((array) => {
                        this.allUsersData.next(array.body);
                    })
                )
        })
    ).subscribe();

}

getAnXSRfToken() {
    return this.http
        .post<{
            parameterName: string;
            headerName: string;
            token: string;
        }>('http://localhost:8080/user/getXSRfToken', null)
        .pipe(
            tap((tokenData) => {
                console.log('REQ --- token ---generated ');
                console.log(tokenData.token);
                this.XSRF_TOKEN.next(tokenData.token);
            })
        );
}

Angular相关问答推荐

Angular 17 -对话框组件未样式

Angular 动画-每次点击时都让迪夫向右移动一定程度

Angular material 输入字段中的图标未显示

HTTP Get请求未发送到提供的URL

Angular 16未知参数:独立

运行容器后,Docker容器立即退出

存储服务存储在本地存储中,但无法检索到它

对子router-outlet 应用主机样式

如何使用ANGLING HTTP.POST并将类型更改为键入的回复?

我应该对我想要在我的Angular 17+组件中显示的任何变量使用信号吗?

根据环境变量动态加载Angular templateUrl

Angular 按钮指令错误地附加子元素

您如何链接需要多个先前可观察对象的依赖订阅

过滤 ngfor Angular 的计数

带有 Angular 2 的 Django

Angular/RxJS 6:如何防止重复的 HTTP 请求?

如何在不刷新整页的情况下更新组件

angular2:错误: TypeError: Cannot read property '...' of undefined

CORS 错误:requests are only supported for protocol schemes: http…等

Angular2 Base64 清理不安全的 URL 值