我从 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;
}

由于 fetchresponse.json() 之前的 await 关键字,即使这些是异步调用,javascript 引擎也不会移动到下一行。这使代码的行为更像您期望的那样。然后我们得到json数据后,我们可以用数组函数forEach遍历每个元素,根据传入的userEmail设置角色。但是请注意,您在函数之前看到 async 声明了吗?这在您使用 await 的任何时候都是必需的。这意味着您还需要用 async 修饰调用 getUserRole 的函数。

$.getJSON( url,
[数据],
[回调] //做你想做的 ) 处理回调中的角色