Javascript 如何使用typescript(ionic2)从函数中获取值
我试图从一个函数中得到一个值。这就是我想要做的: 在文件favorite.ts中Javascript 如何使用typescript(ionic2)从函数中获取值,javascript,angular,typescript,ionic2,Javascript,Angular,Typescript,Ionic2,我试图从一个函数中得到一个值。这就是我想要做的: 在文件favorite.ts中 getUserFavsCount(userId:string){ 让计数=0; 让favs=this.af.list(`/favorites/${userId}`)。订阅(数据=>{ 计数=数据长度; }); console.log(count)//获取值。这里显示的是正确的 返回计数; }正如艾伦所评论的,您需要返回一个承诺。始终使用承诺,否则会出现并发问题。试试这个 getUserFavsCount = (u
getUserFavsCount(userId:string){
让计数=0;
让favs=this.af.list(`/favorites/${userId}`)。订阅(数据=>{
计数=数据长度;
});
console.log(count)//获取值。这里显示的是正确的
返回计数;
}
正如艾伦所评论的,您需要返回一个承诺。始终使用承诺,否则会出现并发问题。试试这个
getUserFavsCount = (userId: string): Promise<number> => {
// SINCE YOU RETURN A LENGTH, THEN THE PROMISE SHOULD RETURN A NUMBER
// THERE'S NO NEED TO DECLARE A COUNT VARIABLE SINCE YOU'LL NOT USE IT
return new Promise<number>(resolve =>{
let favs = this.af.list(`/favorites/${userId}`).subscribe(data =>{
resolve(data.length);
});
});
}
希望这有帮助:D您必须从
getUserFavsCount()
返回一个承诺,因为您正在向firebase发出请求,并且只有当请求完成时,您才能获得实际的计数。因此,您可以从getUserFavsCount
返回this.af.list('/favorites/${userId}')
,并在countUserFav
中订阅它,并且只有当它准备好更新this.myFavs
时才能订阅它。谢谢!!有效:)
countUserFav() {
this.userProvider.currentUser.first().subscribe((currentUser: User) => {
this.favoriteProvider.getUserFavsCount(currentUser.$key).then(res =>{
this.myFavs = res;
});
});
}