【问题标题】:return boolean value of an observable返回可观察对象的布尔值
【发布时间】:2019-07-27 17:43:23
【问题描述】:

如何让这个函数返回真值或假值

  autenticacion(){
    let bool:boolean;
    this.auth.autenticacion(this.auth.getToken()).subscribe(data=>{
      if(data.data.token===this.auth.getToken()){
        bool=true;
      }else{
        bool=false;
      }
    });
    console.log(bool);
    return bool;
  }

this.autenticacion();

当我调用该函数时,我检查它是否使用控制台日志返回给我,但它返回一个未定义的值,有人知道如何让我返回 false 或 true

【问题讨论】:

  • 你没有在这个函数中返回任何东西。 return 不见了
  • 1.在console.log(...) 之后添加return bool;。 2.你的if条件应该是data.data.token === this.auth.getToken()。 3.定义bool为bool: boolean;
  • 直接返回bool
  • 如果我返回值仍然不返回任何内容
  • 仍然显示未定义

标签: angular


【解决方案1】:

如果你想返回一些值,你不应该订阅 observable。 试试这个:

autenticacion(){
  return this.auth.autenticacion(this.auth.getToken()).pipe(map(data=>{
    if(data.data.token==this.auth.getToken()){
      return true;
    }else{
      return false;
    }
  }));

}

然后

this.autenticacion().subscribe(val => console.log(val)

【讨论】:

  • 或者只是return data.data.token === this.auth.getToken();
  • 你错了。如果您使用的是 HttpClient,它会返回一个 observable,它会在收到 API 响应后自动取消订阅。在这种情况下,您绝对可以返回一个值。
猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 2021-09-22
  • 2017-07-12
  • 2018-12-16
  • 1970-01-01
  • 2018-11-13
  • 2019-02-18
  • 2019-09-16
相关资源
最近更新 更多