如何将 fetch API 请求中的 json 数据存储到全局变量中 - javascript

查尔斯·卡萨西拉

then()一直在使用 fetch API 并从 由于它的状态管理,我能够用 reactjs 做到这一点,但在 vanilla javascript 中,由于返回的承诺很难做到

我尝试过的事情

const res = await fetch('./data.json')
    .then(res => res.json())
    .then(data => data) // when I log from here I get the data but can't assign it to a global variable even tried using `var`

使用 async/await 仍然没有希望。

const fun = async () => {
  const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
  return response.json()
}
逻辑分支

虽然我了解您希望为您的数据使用全局变量,但我建议不要污染全局命名空间(另请参阅:[1][2][3][4])。

相反,您可以将所有内容封装在立即调用函数表达式 (IIFE)中,并fetch在其中包含与程序该区域相关的所有代码的方法。

然后,通过重新排列@alexanderdavide 的答案,我们得到以下代码:

(async () => {
  let data_local;

  const getData = async () => {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
    const data = await response.json();
    dataGlobal = data;
    return data;
  };

  await getData();
  console.log(data_local);

  // your code goes here...
})();

您也可以使用以下替代方法:

(async () => {
  const getData = async () => {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
    const data = await response.json();
    dataGlobal = data;
    return data;
  };

  let data_local = await getData();
  console.log(data_local);


  // your code goes here...
})();

这样,您的data_local变量将可用于它下面的所有内容,但不能用于 IIFE 本身之外,从而保护全局命名空间,同时允许多个方法访问同一个变量,而无需使用带data参数的回调。

注意:如果/当您更改数据变量时请小心,您最终可能会多次更改它,并且由于丢失/格式不正确的数据而无意中导致错误。

祝你好运。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript如何将Fetch数据存储到全局变量

如何将Ajax JSON对象存储到全局变量中以在函数外部访问

将API数据存储在全局变量jquery中

我可以使用JavaScript将Fetch的结果存储在全局变量中吗?

JavaScript Google Maps API如何将位置经/纬度存储到全局变量

如何将 API 中的数据分配给 Android 中的全局变量?

无法将值从匿名函数存储到全局变量中-Javascript和量角器

如何将javascript数组或JSON存储到php中

JavaScript-将元素存储在全局变量中

如何将JSON数据保存到JavaScript中的变量

如何将 if/else 语句与 JSON fetch API 响应 Javascript 一起使用

如何将API请求JSON与MongoDb中的现有json文档进行比较?

如何将XMLHttpRequest的输出存储在全局变量中

如何将JavaScript变量存储到PHP变量中?

如何将JSON请求中的过滤器参数发送到HBase REST API?

将数据库连接存储在全局变量中

Javascript Fetch API-如何将输出保存为对象的变量(不是Promise)

Javascript - 如何将 for 循环的结果存储到变量中?

如何通过在 Firefox 中 fetch js 向 API 发出请求?

如何在 fetch API 请求中包含 if-else 条件?

如何将JSON存储在变量中

将JSON数据存储到变量中

如何将JSON数据带到Javascript表中?

如何将事件对象分配给 javascript 中的全局变量?

如何将输入的文本输入到 json 请求中?

如何将秒表javascript中的数据存储到MySQL

如何避免JavaScript中的全局变量?

向Tomcat发送POST请求时如何解决浏览器中的Javascript fetch API错误?

JavaScript将数据从json获取到全局变量