javascript - 在 forEach 完成之前返回的数据
问题描述
我正在从包含来自其他来源的同一项目的 ID 的 API 检索数据。我想遍历每个项目并使用此 ID 执行另一个 API 调用来获取和设置其他信息。但是,promise 返回的值仅包括来自第一个 API 调用的数据,而不包括我需要的其他数据。
这是代码:
const fetch = require('node-fetch');
const startDate = "2021-04-29"
mergeData().then(premieres => {
console.log(premieres);
})
async function mergeData() {
const premieres = await getPremieres();
premieres.forEach(async premiere => {
if (premiere.show.ids.tmdb) {
const data = await getShowDetails(premiere.show.ids.tmdb);
premiere.show.tmdbData = data;
}
});
// This value is being returned before the forEach is ran
return premieres;
}
async function getPremieres() {
const response = await fetch(`https://api.trakt.tv/calendars/all/shows/premieres/${startDate}/7?countries=us`, {
headers: {
"trakt-api-key": "xxx"
}
});
return response.json();
}
async function getShowDetails(id) {
const response = await fetch(`https://api.themoviedb.org/3/tv/${id}?api_key=xxx`)
return response.json();
}
如何确保回调mergeData()
包含在forEach
循环中检索到的其他数据?
解决方案
推荐阅读
- html - 如何在悬停时将背景图像移动到远离边框的中心?
- reactjs - 将对象传递给 setState 失败
- javascript - Primus 调用 nodejs 服务器,未找到 primus 文件
- regex - 在 Notepad++ 或 Emeditor 等文本编辑器中使用正则表达式精确匹配单词(单词和非单词字符的混合)
- javascript - 输入自动取类“btn-lg”
- python - 如何利用具有列表理解的索引?
- css - 将 CSS 重写为 SASS 问题:两个 css 文件中的类定义相同
- c - 为什么 C 中 void 主函数内的参数值初始化为 1?
- node.js - 在Node和sqlite3中插入多行多列
- sublimetext3 - 我需要一个正则表达式来替换语法