javascript - 在运行第二个 javascript 文件之前等待承诺完成?
问题描述
我有两个 javascript 文件。第一个,request.js,从 URL 获取 JSON 并将数据格式化,将其分配给全局变量。第二个,main.js,使用来自全局变量的数据。我遇到的问题是第二个 javascript 文件在来自 URL 的请求得到解决之前运行。有没有什么办法可以阻止程序的其余部分运行,直到 promise 得到解决,而无需从 request.js 中的 main.js 调用函数?
请求.js:
...
fetch(url).then(res => res.json())
.then((data) => {
organiseData(data);
})
.catch(err => {
throw err
});
...
主.js:
...
loadImages(submissionArr, categoriesMap);
...
编辑:我试图避免在主文件中显式调用 request.js 文件,因为我还计划将它与其他 javascript 文件一起使用。
解决方案
将 fetch 包装在一个函数中并返回它的承诺,以便您可以执行以下操作:
function getData() {
// return the fetch promise
return fetch(url).then(res => res.json())
.then((data) => {
organiseData(data);
// optionally return data if needed it down the chain
})
.catch(err => {
throw err
});
}
然后从 main 调用它:
getData().then(data = > loadImages(submissionArr, categoriesMap);)
推荐阅读
- javascript - 无法使用外部 css 文件删除 Material Ui 表默认样式
- c++ - OpenCV 拼接模式:SCANS 因某些属性而崩溃
- curl - Charles 代理 localhost 到 https
- sql - SQL Server 为计算列提供值
- sql-server - AX 2012 - 通过非生产恢复生产
- codenameone - createBackgroundMedia 方法不适用于 URL 和本地文件
- architecture - 单周期 mips,存储 word(sw) 控制值,为什么 MemRead 为 0 而不是“不关心”?
- google-cloud-platform - 如何使用 Google Cloud Armor 将 GKE 上的几个 IP 列入白名单?
- java - MethodHandles.lookup().defineClass 保留
- r - 我希望 R 在将我的输出导出为 pdf 时提示输入文件名和位置