Angular Firebase角度返回值在循环外

Angular Firebase角度返回值在循环外,angular,typescript,firebase,Angular,Typescript,Firebase,我对Angular和Firebase都是新手。当我检查用户登录时,我的函数总是返回0,即使我做了正确的检查。我的问题是我的返回值来自外部 checkLog(mail: string, password: string): number { let isTrue = 0; this.http.get(exampleJson).subscribe(resData => { for (let data in resData) {

我对Angular和Firebase都是新手。当我检查用户登录时,我的函数总是返回0,即使我做了正确的检查。我的问题是我的返回值来自外部

 checkLog(mail: string, password: string): number {
        let isTrue = 0;
        this.http.get(exampleJson).subscribe(resData => {
            for (let data in resData) {
                this.http.get<User_model>(exampleJson' + data + '/.json').subscribe(res2Data => {
                    console.log('Name = ', res2Data.user_name, 'Password = ', res2Data.password);
                    if (mail === res2Data.user_name && password === res2Data.password) {
                        isTrue = 1;
                    }
                })
            }
        });
        return isTrue;
    }
checkLog(邮件:字符串,密码:字符串):数字{
设isTrue=0;
this.http.get(exampleJson).subscribe(resData=>{
for(让数据进入resData){
this.http.get(例如json'+data+'/.json').subscribe(res2Data=>{
console.log('Name=',res2Data.user_Name',Password=',res2Data.Password);
如果(邮件===res2Data.user\u名称和密码===res2Data.password){
isTrue=1;
}
})
}
});
回归真实;
}

主要原因是您在函数中进行了几个异步HTTP调用,这需要时间来处理

调用
checkLog
时,工作流如下所示:

  • let isTrue=0被调用
  • this.http
    被异步调用,这意味着它需要一些时间来处理
  • returnistrue在之后立即调用
您的变量
isTrue
没有时间处理,显然返回0,因为您的HTTP调用没有及时处理您的变量


您可以找到解决问题的方法之一。

主要原因是您在函数中进行了几个异步HTTP调用,这需要时间来处理

调用
checkLog
时,工作流如下所示:

  • let isTrue=0被调用
  • this.http
    被异步调用,这意味着它需要一些时间来处理
  • returnistrue在之后立即调用
您的变量
isTrue
没有时间处理,显然返回0,因为您的HTTP调用没有及时处理您的变量

可以找到解决您问题的方法之一