【问题标题】:Firebase-Angular returning value outside loopFirebase-Angular在循环外返回值
【发布时间】:2020-12-24 01:51:04
【问题描述】:

我是 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;
    }

【问题讨论】:

    标签: angular typescript firebase


    【解决方案1】:

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

    当checkLog 被调用时,工作流程如下:

    • let isTrue = 0; 被调用
    • this.http 是异步调用的,这意味着需要一些时间来处理
    • return isTrue; 在之后被调用

    您的变量 isTrue 没有时间处理,显然返回 0,因为您的 HTTP 调用没有及时处理您的变量。

    您的问题的解决方案之一可以找到on this topic。

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 2021-11-07
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多