将变量设置为异步函数中的值
Set a variable to a value inside asynchronous function
首先我知道不能那样做,因为你不能在异步函数中初始化变量。
但是我需要你们帮我改正。
在这个例子中,我有一个可观察对象,我想return它是可变的,并在其他函数中使用它
id:string;
constructor(){
this.user$.subscribe(data=>{
this.id = data.uid})
console.log(this.id) //undefined
}
I know this is wrong but i don't know the correct way to do it.
例如我需要这里的用户id!但因为它是未定义的,所以我得到错误
getCat() :Observable<boolean>{
return this.afs.collection('users').doc(this.id).collection('categories').get().pipe(
map(data => {
if(data.size > 0){
return true
}else{
return false
}
})
)
}
应该在用户可观察对象的订阅中调用 getCat 函数,我的意思是在获取用户 ID 之后。
this.user$.subscribe(data=>{
this.id = data ? data.uid : null;
console.log(this.id); //should have a value
this.getCat() // just call the function here
});
首先我知道不能那样做,因为你不能在异步函数中初始化变量。
但是我需要你们帮我改正。
在这个例子中,我有一个可观察对象,我想return它是可变的,并在其他函数中使用它
id:string;
constructor(){
this.user$.subscribe(data=>{
this.id = data.uid})
console.log(this.id) //undefined
}
I know this is wrong but i don't know the correct way to do it.
例如我需要这里的用户id!但因为它是未定义的,所以我得到错误
getCat() :Observable<boolean>{
return this.afs.collection('users').doc(this.id).collection('categories').get().pipe(
map(data => {
if(data.size > 0){
return true
}else{
return false
}
})
)
}
应该在用户可观察对象的订阅中调用 getCat 函数,我的意思是在获取用户 ID 之后。
this.user$.subscribe(data=>{
this.id = data ? data.uid : null;
console.log(this.id); //should have a value
this.getCat() // just call the function here
});