我在写Reaction应用程序。单击一个按钮后,我希望下载该文件。在此之前,必须修改我拥有的数组,以使下载的报告格式正确。
我遇到的问题是,我不知道如何强制getReports()
等待setInOrder()
处理数据。因此,代码不会进入循环。
export const setInOrder = async (objects) => {
var sortedObjectsAll = new Object();
for (let i = 0; i < objects.length; ++i) {
if (sortedObjectsAll.hasOwnProperty(objects[i].addedBy)) {
sortedObjectsAll[objects[i].addedBy].push(objects[i]);
} else {
sortedObjectsAll[objects[i].addedBy] = new Array();
}
}
return sortedObjectsAll
}
export const getReports = async (objects) => {
const sortedObjectsAll = await setInOrder(objects) // This is correct but not available instantly
console.log(sortedObjectsAll) // this is correctly printed
const reports = new Array();
for (let j = 0; j < sortedObjectsAll.length; ++j) {
console.log("Never enters here")
reports.push(createReport(sortedObjectsAll[j]))
}
return reports
}
我正在尝试使用等待或异步,但不能解决它。我看到了一些建议的承诺,但我不知道如何真正将结果变量返回到实际下载报告的代码。
1条答案
按热度按时间fnx2tebb1#
首先,您不需要编写一个类似的异步等待操作,因为它不是一个异步操作(如果您编写了一个异步操作,并且其中没有任何等待,那么它将不会等待任何东西)。
其次,您希望遍历对象,而不是数组,这就是问题所在。替换为以下内容(也有其他解决方案):