我正在导入一个json文件并遍历该对象。
每个对象都有一个带有eventID的数组,我也通过它进行循环。
在此forEach中,我推送了一个包装函数,该函数将Promise返回到数组State
遍历所有对象后,我在promises
数组上执行promise.all()
。但是奇怪的是,在此循环之后我没有执行任何操作。
promises
答案 0 :(得分:1)
调查后,该行:
topic_title = table_tag.find('a', href=True)
if topic_title:
datum = {
'topic_title': topic_title['title'],
'topic_text': topic_title.text
}
data.append(datum)
是主要问题(许多其他问题通过评论解决)。
要说明的问题是,if (country.eventIDs.length === 0) return
不是跳过循环项(也许是预期的),而是在return
回调中返回void
,因此进一步跳过该块的执行。
如果条件成立,则要“跳过”该项目,只需执行此操作
then
答案 1 :(得分:0)
更好的是捕获每个承诺的每个结果。因为如果您想要.All的响应数组。如果其中一项承诺被拒绝,您将不会有结果。
const results = [];
country.eventIDs.forEach(id => promises.push(getEventData(country, id)
.then(res => results.push(res));
Promise.all(promises).then(()=> writeFile(results))