javascript - 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?
}
})
解决方案
一方面,你试图重新分配一个const
声明,这是被禁止的。如果您希望您的代码正常工作,则必须将其更改为let
. 然后,要使其成为全局对象,请将其绑定到window
浏览器中的全局对象。
但是,异步请求的原理是希望等待数据到达后再做某事,因此将 fetch 的结果放在全局范围内用途非常有限,因为您希望能够知道数据何时到达。
为了做到这一点,你只需要在.then()
你的fetch()
. 处理异步数据几乎总是有更好的方法,而不是污染全局范围并使用复杂的事件或超时系统检查特定全局变量的变化。
推荐阅读
- javascript - 将项目存储为 cookie,在普通浏览器上工作得很好,但在本机设备浏览器上会有影响
- java - Hystrix 线程池 maximumSize、coreSize 和 allowMaximumSizeToDivergeFromCoreSize 不起作用?
- java - 使用带有 XadesBes 时间戳的信封签名
- sql - 系统版本控制时间?
- sql - 突出显示两个表之间匹配行的差异
- excel - Excel VBA 到 PPT 在 Office 365 64 位中不起作用
- authentication - AD 可以为我的 Win 桌面应用程序提供我的 Web 服务凭据吗?
- c# - DotNet Core,如何使用自定义模型绑定对控制器操作方法进行单元测试
- c - 我对数组的索引感到困惑
- node.js - 如何测试 dotenv 包以确保它隐藏敏感数据?