【问题标题】:Variable cannot access outside .then()变量不能在 .then() 外部访问
【发布时间】:2022-02-04 16:06:11
【问题描述】:

我正在尝试为我的本地应用程序设置身份验证器。发现我无法在 .then() 方法之外访问我的 var

var authenticated = false;
Auth.findtheUser({
}).then(user => {
  verified= user.name.verified;
  console.log("authenticated11", verified)
}
).catch(err => console.log(err));
console.log("authenticated", verified)

authenticated11 的输出为真,但不是最后的那个 谁能帮我解决这个问题。 JavaScript 新手。

【问题讨论】:

    标签: javascript promise


    【解决方案1】:

    你不能在 JS 中直接使用异步函数的结果。看到这个问题:How to return the response from an asynchronous call

    【讨论】:

    • 这个问题确实有很多信息,我不确定承诺是否适合我的情况
    • 您在当前代码中使用了 Promise。然后在 findtheUser 解析后调用 .then() 函数。
    【解决方案2】:

    根据您在此答案的评论中描述的内容。您正面临与范围相关的异常。

    var authenticated = false;
    Auth.findtheUser({
      }).then(user => {
        verified= user.name.verified;
        console.log("authenticated11", verified)
    }
    ).catch(err => console.log(err));
    // This will throw an exception because verified does not exist in this scope
    console.log("authenticated", verified)
    

    你应该把它改成这个

    var authenticated = false;
    var verified;
    Auth.findtheUser({
      }).then(user => {
        verified= user.name.verified;
        console.log("authenticated11", verified)
    }
    ).catch(err => console.log(err));
    // This will throw an exception because verified does not exist in this scope
    console.log("authenticated", verified)
    

    【讨论】:

    • 当我以这种方式声明编译器天数验证未定义no-undef
    • 好吧,不一样!你得到这个异常是因为你之前没有声明过这个变​​量,并且控制台日志超出了“已验证”变量的范围。我会编辑我给你的答案
    • 我在stackoverflow中提问之前尝试了这种方法。您发布的答案无效,已验证 var 的输出未定义
    • 不能退出promise的范围
    • 这就是我的问题是我希望在承诺块之外使用该变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多