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

问题描述 投票:0回答:2
$.getJSON(url, function(json) {
  for (var i in json) {
    if (json[i].emaill == userMail) {
      role = data[i].role
    }
  }
  return role
});

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

javascript ajax getjson google-sheets-api
2个回答
0
投票

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


0
投票

无论你想要数据在哪里,你首先需要了解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;
}

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

© www.soinside.com 2019 - 2024. All rights reserved.