javascript - RxJS 映射在执行订阅之前返回数据

标签 javascript angular rxjs ionic4

在下面的代码中,用户在订阅内的代码之前返回。您知道订阅​​执行后如何返回用户吗? 感谢您的帮助。

map(user => {
        console.log('!!user is::: ', !!user);
        this.httpService.makePostRequest('login', {}, true).subscribe((response: any ) => {
          if (!response.success) {
            return null;
          } else {
            user.token = response.token;
            this.globals.params.user.token = response.token;
            console.log(user.token);
          }
        });
        return !!user;
      })

最佳答案

首先,不要订阅可观察对象。首先返回您的用户,因为您的订阅函数需要时间来响应(这是一个异步操作)。 如果您想在返回用户之前执行您的发布请求,您可以执行以下操作:

mergeMap(user => {
    console.log('!!user is::: ', !!user);
    return this.httpService.makePostRequest('login', {}, true).pipe(
        map((response: any ) => {
            if (!response.success) {
                return null;
            } else {
                user.token = response.token;
                this.globals.params.user.token = response.token;
                console.log(user.token);
            }
            return user;
        })
    );
})

关于javascript - RxJS 映射在执行订阅之前返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59027647/

相关文章:

javascript - CORS 和编号 'Access-Control-Allow-Origin'

javascript - 使用下拉菜单阻止页面加载

angular - 在 IE 中调试 angular 2 typescript 应用程序

angular - 结构指令的上下文未更新

angular - 检测父元素是否绑定(bind)到 Angular 中子元素的 @Output

angular - rxjs switchMap 在 Angular Guard 中不起作用?

javascript - 如何将项目附加到 Observable

javascript - 语言切换器不应用新的区域设置

c# - 如何设置默认下拉列表选定项

angular - Angular 2 最新版本中的 Rxjs Observable 问题