我从googlespreasheet获得json,我需要将一些变量传递给js函数

时间:2019-04-27 14:44:22

标签: javascript ajax getjson google-sheets-api

$.getJSON(url, function(json) {
  for (var i in json) {
    if (json[i].emaill == userMail) {
      role = data[i].role
    }
  }
  return role
});

我需要将角色变量传递给另一个函数

2 个答案:

答案 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;
}

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

答案 1 :(得分:0)

$。getJSON(     网址,
    [数据],
    [callback] //做你想做的 ) 处理回调中的角色