繁体   English   中英

变量未从函数内部设置

[英]Variable not getting set from within function

我来自 Python 背景并且几乎没有 JavaScript 经验,所以我在这里有点不合时宜。

我正在尝试做一些看似简单的事情,获取一个 AWS 账户 ID 并将其存储在一个变量中。 我引用了这个 StackOverflow 问题中的代码,但我对它做了一些修改。

var account =  sts.getCallerIdentity({}, function (err, data) {
    if (err) {
        console.log("Error ", err)
    } else {
        account = data.Account.toString();
        console.log(account);
        return account

    }
});
//console.log(account);

如果我将 console.log 语句注释掉,我会看到 AWS 帐户 ID 被打印到控制台,这正是我所期望的。 但是,如果我取消注释该行,则会得到一个正在打印到控制台的非常大的对象(我认为它实际上是数据变量)。

我只希望帐户变量等于帐户 ID。 我在这里做错了什么?

该函数是异步的,因此您无法真正分配该值。 该值在将来的某个时间在回调中解析。 至此, console.log已经执行console.log

您可以做两件事,在回调中添加需要account的逻辑或使用承诺。

sts.getCallerIdentity({}).promise().then((data) => console.log(data));
sts.getCallerIdentity({}, (err, data) => {...stuff});

请记住,这些值会在将来的某个时候解决。

在运行回调之前,不会使用您需要的数据设置帐户变量。 也许尝试这样的事情?

 var account = sts.getCallerIdentity({}, function (err, data) { if (err) { console.log("Error ", err) } else { account = data.Account.toString(); doOtherStuff(); } }); function doOtherStuff() { console.log(account); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM