$.getJSON(url, function(json) {
for (var i in json) {
if (json[i].emaill == userMail) {
role = data[i].role
}
}
return role
});
我需要将角色变量传递给另一个函数
答案 0 :(得分:0)
无论您希望在哪里存储数据,首先都需要了解javascript如何处理异步代码(这对开发人员您而言意味着什么)由于$.getJSON是异步的,因此执行return role
之类的操作会对函数如何返回值的常规想法没有做任何有用的事情。 await/async最近引入了一些东西,它试图抽象出很多这样的代码。但是,这也有一些警告。我要做的是使用async / await使事情变得更加简单。我会使用提取:
async function getUserRole (userEmail) {
const response = await fetch(url);
const json = await response.json();
let role;
json.forEach(user => {
if(user.email === userEmail) {
role = user.role;
}
}
return role;
}
由于await
和fetch
之前的response.json()
关键字,即使这些是异步调用,JavaScript引擎也不会移至下一行。这使代码的行为更像您期望的那样。然后,在获取json数据之后,我们可以使用数组函数forEach
遍历每个元素,并根据传入的userEmail
设置角色。但是要注意,您在函数之前看到了async
声明吗?任何时候使用await都是必需的。这意味着您还需要用getUserRole
装饰正在调用async
的函数。
答案 1 :(得分:0)
$。getJSON(
网址,
[数据],
[callback] //做你想做的
)
处理回调中的角色