【问题标题】:I got json from googlespreasheet and i need to pass some variables to js function我从 googlespreasheet 获得了 json,我需要将一些变量传递给 js 函数
【发布时间】:2019-04-27 14:44:22
【问题描述】:
$.getJSON(url, function(json) {
  for (var i in json) {
    if (json[i].emaill == userMail) {
      role = data[i].role
    }
  }
  return role
});

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

【问题讨论】:

  • $.getJSON 是异步的。
  • 是的,我知道,但我该如何处理呢?
  • 太棒了,我没想到,我试图用 javascript 计算值,但我可以很容易地将 case 传递给 googlescript 和 gs 计算它并返回响应...... 假我

标签: javascript ajax getjson google-sheets-api


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 2017-06-03
      • 1970-01-01
      • 2021-02-10
      • 2021-02-21
      • 1970-01-01
      相关资源
      最近更新 更多