[英]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.