【问题标题】:Returning boolean value in an rxjs function fails在 rxjs 函数中返回布尔值失败
【发布时间】:2017-06-11 18:44:42
【问题描述】:

我是 rxjs 新手,我想返回一个可观察的真假

这是我尝试过的

checkLoggedin():Observable<boolean> {
  //check from server if user is loggdin
  if(this._tokenService.getToken()){ //this returns synchronous true or false

      this._httpservice.checkifloggedin()
         .subscribe((res)=>{
            return res.data //this comes in as true or false value
              },
              err=>{ return false }
              )    
     }else{

        return false  //this fails with an error of 
                    //type false is not assignable to observable<boolean>
        }

 }

如何更改上述 else 部分以使用布尔可观察对象,以便在其他组件中我只能这样做

this._authservice.checkLoggedin()
  .subscribe.....//here get the value whether true or false

【问题讨论】:

    标签: angular typescript rxjs


    【解决方案1】:

    这应该可以工作

    checkLoggedin():Observable<boolean> { 
      if(this._tokenService.getToken()){ 
        return this._httpservice.checkifloggedin().map(res=>res.data ) ;
      } else { 
        return Observable.of(false);
      }
    }
    

    【讨论】:

      【解决方案2】:

      使用return Observable.of(false) 代替return false

      【讨论】:

      • 这会立即返回值,你想发出它,然后你 httpservice 返回数据。
      • @Oisin,其实没有,仔细看,他会同步返回false
      • @GEOFFREY MWANGI,你也不应该订阅你的checkLoggedin函数,因为那样你会返回subscribtion而不是observable。您需要使用map,请参阅@Skeptor 的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 2012-09-06
      • 2021-10-29
      • 2013-03-11
      • 1970-01-01
      • 2011-07-12
      相关资源
      最近更新 更多