我从 googlespreasheet 得到了 json,我需要将一些变量传递给 js 函数
I got json from googlespreasheet and i need to pass some variables to js function
$.getJSON(url, function(json) {
for (var i in json) {
if (json[i].emaill == userMail) {
role = data[i].role
}
}
return role
});
我需要将角色变量传递给另一个函数
无论您在何处需要数据,您首先需要了解 javascript 如何处理异步代码(以及这对您,开发人员意味着什么)因为 $.getJSON is asynchronous, doing something like return role
will not do anything useful in your regular idea of how functions return values. Something introduced recently is 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;
}
由于 fetch
和 response.json()
之前的 await
关键字,即使这些是异步调用,javascript 引擎也不会移动到下一行。这使代码的行为更像您期望的那样。然后我们得到json数据后,我们可以用数组函数forEach
遍历每个元素,根据传入的userEmail
设置角色。但是请注意,您在函数之前看到 async
声明了吗?这在您使用 await 的任何时候都是必需的。这意味着您还需要用 async
修饰调用 getUserRole
的函数。
$.getJSON(
url,
[数据],
[回调] //做你想做的
)
处理回调中的角色
$.getJSON(url, function(json) {
for (var i in json) {
if (json[i].emaill == userMail) {
role = data[i].role
}
}
return role
});
我需要将角色变量传递给另一个函数
无论您在何处需要数据,您首先需要了解 javascript 如何处理异步代码(以及这对您,开发人员意味着什么)因为 $.getJSON is asynchronous, doing something like return role
will not do anything useful in your regular idea of how functions return values. Something introduced recently is 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;
}
由于 fetch
和 response.json()
之前的 await
关键字,即使这些是异步调用,javascript 引擎也不会移动到下一行。这使代码的行为更像您期望的那样。然后我们得到json数据后,我们可以用数组函数forEach
遍历每个元素,根据传入的userEmail
设置角色。但是请注意,您在函数之前看到 async
声明了吗?这在您使用 await 的任何时候都是必需的。这意味着您还需要用 async
修饰调用 getUserRole
的函数。
$.getJSON(
url,
[数据],
[回调] //做你想做的
)
处理回调中的角色