我正在调用此函数以检索用户属性,但是,当我测试该函数时,返回结果始终为“ 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;
}
答案 0 :(得分:0)
对于启动“异步代码”,您需要包装功能以保证:
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)