我正在调用此函数来检索用户属性,但是当我测试函数时,返回结果始终为“test”,然后它将通过“cognitoUser.getUserAttributes”并记录实际结果。我不确定为什么但是“cognitoUser.getUserAttributes”似乎最初被跳过了。
在运行时,它打印出测试而不是实际结果
有任何想法吗?
function retrieveattribute(e) {
var ans = "test";
var e = "custom:InstanceID_1";
cognitoUser.getUserAttributes(function(err, result) {
if (err) {
alert(err);
return;
}
for (i = 0; i < result.length; i++) {
if (result[i].getName() == e) {
ans = result[i].getValue();
console.log(ans);
return ans;
}
}
});
return ans;
}
要启动“异步代码”,您需要将函数包装为承诺:
function retrieveattribute(e) {
return new Promise(function(res) {
var ans = "test";
var e = "custom:InstanceID_1";
cognitoUser.getUserAttributes(function(err, result) {
if (err) {
alert(err);
return;
}
for (i = 0; i < result.length; i++) {
if (result[i].getName() == e) {
ans = result[i].getValue();
console.log(ans);
res(ans);
}
}
});
})
}
在它之后你可以使用承诺:
retrieveattribute(e).then(t => console.log(t))
或等待它在异步功能:
await retrieveattribute(e)