首页 > 解决方案 > JavaScript Fetch API:全局访问局部变量

问题描述

我正在使用 Fetch API 开发一个项目。我想使用 fetch 从文本文件中获取一些数据并将它们放入数组中,以便我可以使用它们。我不确定使用什么代码来使变量成为全局变量。我认为通过在 fetch 语句之外初始化变量,我可能能够以这种方式使用它。这是我到目前为止所拥有的:

动物.txt

cat
dog
rabbit

index.js

const animalArray;
fetch('animals.txt')
    .then((res) => res.text())
    .then(data => {
      animalArray = data.split(/\r?\n/) //how can I access this outside of the fetch statement?
} 
})

标签: javascriptarraysvariablesglobalfetch-api

解决方案


一方面,你试图重新分配一个const声明,这是被禁止的。如果您希望您的代码正常工作,则必须将其更改为let. 然后,要使其成为全局对象,请将其绑定到window浏览器中的全局对象。

但是,异步请求的原理是希望等待数据到达后再做某事,因此将 fetch 的结果放在全局范围内用途非常有限,因为您希望能够知道数据何时到达。

为了做到这一点,你只需要在.then()你的fetch(). 处理异步数据几乎总是有更好的方法,而不是污染全局范围并使用复杂的事件或超时系统检查特定全局变量的变化。


推荐阅读