我正在开发一个使用 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?
}
})
最佳答案
一方面,您试图重新分配一个 const
声明,这是被禁止的。如果您希望代码正常工作,则必须将其更改为 let
。然后,要使其成为全局的,请将其绑定(bind)到浏览器中的全局对象 window
。
然而,异步请求的原理是你想要等待数据到达才做某事,所以将fetch的结果放在全局作用域中用途非常有限,因为你希望能够知道数据什么时候到达已经到了。
为了做到这一点,您只需执行 fetch()
的 .then()
中要做的任何事情。 几乎总有一种更好的方法来处理异步数据,而不是污染全局范围并使用复杂的事件系统或超时检查特定全局变量中的更改。
关于JavaScript 获取 API : accessing local variable globally,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50397473/