javascript - Riot API Promise 全部使用 Fetch
问题描述
我正在尝试循环播放 10 场英雄联盟比赛,并且对于每场比赛,调用另一个 api 来获取比赛详细信息。到目前为止,我有一个这样的功能设置:
function getAllMatchData(ids) {
const promises = [];
_.take(ids, 1).forEach(id => {
const promise = fetch(`https://na1.api.riotgames.com/lol/match/v4/matches/${id}`, {
headers: {"X-Riot-Token": token}})
promises.push(promise);
})
return Promise.all(promises);
}
由于 api 返回 100 个匹配项,我只取前 10 个,然后用它们创建一个 promise 数组。然后我这样做以获得结果:
getAllMatchData(_.map(data['matches'], 'gameId')).then(results => {
console.log(results);
}).catch(error => {
console.log(error);
})
但是结果的控制台日志中没有任何 json 数据。它打印一个如下所示的对象数组:
Response {
size: 0,
timeout: 0,
[Symbol(Body internals)]: { body: [Gunzip], disturbed: false, error: null },
[Symbol(Response internals)]: {
url: 'https://na1.api.riotgames.com/lol/match/v4/matches/3556728982',
status: 200,
statusText: 'OK',
headers: [Headers],
counter: 0
}
}
我不确定 JSON 数据响应在哪里。
解决方案
使用 fetch,您需要使用您收到的响应类型来解析响应。
const promise = fetch(`https://na1.api.riotgames.com/lol/match/v4/matches/${id}`, {
headers: {"X-Riot-Token": token}}).then(res => res.json())
在你的情况下,它是 json。所以它就像调用一样简单res.json()
。
推荐阅读
- python - 在张量中分配行会引发“不支持无值”
- java - 如何将 FLUSHDB ASYNC 与 RedisTemplate 一起使用?
- android - 为安卓游戏创建游戏邀请码
- django - Django:如何使用 Django ORM 实现 JOIN?
- wordpress - 如何禁用插入块按钮并且不允许在“InnerBlocks”中添加任何块
- azure - Azure Notebook VM 启动失败
- angular-material - 如何主题mat-chip?
- php - 单例数据库连接配置文件
- ifstream - ifstream in HTML only Javascript 没有 Jquery
- ruby - 我如何使用 | 和 > ruby Open3 中的字符?