$.getJSON(url, function(json) {
for (var i in json) {
if (json[i].emaill == userMail) {
role = data[i].role
}
}
return role
});
我需要将角色变量传递给另一个函数
$ .getJSON(url, [数据], [callback] //做你想做的事情)在回调中处理角色
无论你想要数据在哪里,你首先需要了解javascript如何处理异步代码(以及这对你,开发人员意味着什么)因为$.getJSON是异步的,所以做return role
这样的事情对于你的常规功能如何不会有用返回值。最近推出的一些东西是await/async,它试图抽象出很多代码。但是,这也有一些警告。我要做的是使用async / await来使事情变得更加简单。我会用fetch:
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
声明吗?无论何时使用等待都需要这样做。这意味着你还需要装饰用getUserRole
调用async
的函数。