angular 4 function return boolean = undefined

时间:2017-09-20 07:54:16

标签: angular function boolean

我似乎无法解决这个问题。我有一个DataService(a.k.a. ds)和一个组件。该组件调用函数doUserExist():

console.log("boolean="+this.ds.doesUserExist());

这始终是未定义的。这是DataService中的函数:

 doesUserExist(){
    var bool:boolean;
    var myvars = this.af.list('/accounts/'+this.uid) as FirebaseListObservable<Listing[]>;

    myvars.subscribe(data=>{
          console.log("length="+data.length)
          if (data.length===0){
            bool = false;        
          }       
        })
        return bool;

      }

我尝试将var bool:boolean作为公共变量,但无论发生什么,这都是未定义的。

我还在上面的if语句中设置了var bool:boolean=true和bool WILL等于false(我已经通过console.log检查过了)而不是以false的形式返回它仍然是true符合上述指定。

那么我做错了什么?我已经四处搜索了,我试过了:

Boolean([return bool])但代码并不喜欢

我也尝试将returns放在if语句中。这不起作用。

谢谢!

1 个答案:

答案 0 :(得分:0)

你没有定义bool,它没有通过你的订阅(因为它是异步的,所以答案可能会在以后出现),所以当你返回bool时,它没有任何价值。

由于您的函数基于响应的长度,因此您可以删除该布尔值。

 doesUserExist(): Observable<boolean> {
  var myvars = this.af.list('/accounts/'+this.uid) as FirebaseListObservable<Listing[]>;

  return myvars.subscribe(data=>{
      console.log("length="+data.length)
      return data.length === 0; // true if that's the case, or false
    })
  }