我似乎无法解决这个问题。我有一个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语句中。这不起作用。
谢谢!
答案 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
})
}