【发布时间】:2022-09-23 06:13:46
【问题描述】:
我正在重构一些旧代码并希望得到一些帮助,我认为这很可能是我对 async/await 和 ES6 模块的误解。
我有两个文件;实用程序.js:
import { displayInfo } from \'./DisplayInfo\';
const someApi = \"https://....\";
const apiPromise = async (string) => {
let response = await fetch(someApi + string);
let json = await response.json();
return json;
}
const getFooBarInformation = () => {
const promiseAll = Promise.all([apiPromise(\'foo\'), apiPromise(\'bar\')]);
const array = [];
const dictionary = {};
promiseAll
.then(response => {
/* Populate array and dictionary, then merge into one array \'mergedInformation\' */
displayInformation(mergedInformation);
})
.catch(errors => {
/* Handle Errors */
})
}
export { getFooBarInformation }
和 Main.js:
import { getFooBarInformation } from \'./Utils\';
getFooBarInformation();
我认为 Utils.js 在 then() 内部处理的太多了。理想情况下,我希望能够将 mergeInformation 返回给 main.js,然后它可以调用 displayInformation(),因为我觉得这更具可读性。如下所示:
import { getFooBarInformation } from \'./Utils\';
import { displayInfo } from \'./DisplayInfo\';
const mergedInformation = getFooBarInformation();
displayInformation(mergedInformation);
我认为这意味着我也必须将 getFooBarInformation 更新为异步函数,但我不确定如果是这种情况我将如何返回 mergeInformation 数组。
const mergedInformation = await getFooBarInformation();
displayInformation(mergedInformation);
标签: javascript async-await es6-modules