【发布时间】:2018-12-29 20:53:39
【问题描述】:
我无法链接这两个 API 调用。所以基本上我正在尝试重新创建 Spotify 界面,并且单独地,这些调用实际上工作得很好!
我还有一个“onPlayClick”函数,它与“onNextClick”函数基本相同,如下所示,但端点不同,并且是 PUT 方法而不是 POST 方法。正确播放和设置 selectedSong 的状态。
但是,调用 updateCurrentlyPlaying 的 onNextClick 无法按预期工作。预期的功能是,当用户单击下一步时,歌曲将转到下一首曲目(有效!),然后更新 UI 上的曲目信息。
但最终发生的是它首先更新轨道信息然后切换轨道,所以在 UI 上它在某种意义上总是“落后一个轨道”,我不知道为什么第二个 API 领先于第一个一! :S 非常感谢任何帮助!
onNextClick = () => {
const { deviceId, token } = this.state
fetch(`https://api.spotify.com/v1/me/player/next?device_id=${deviceId}`, {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + token },
})
.then(response => response.json())
.then(this.updateCurrentlyPlaying())
}
updateCurrentlyPlaying(){
const { deviceId, token } = this.state;
let selectedSong;
fetch(`https://api.spotify.com/v1/me/player/currently-playing?device_id=${deviceId}`, {
method: 'GET',
headers: { 'Authorization': 'Bearer ' + token },
})
.then(response => response.json())
.then(data => {
selectedSong = {
name: data.item.name,
duration: Math.round(data.item.duration_ms / 1000),
artists: data.item.artists,
album: data.item.album.name,
image: data.item.album.images[0],
id: data.item.id,
uri: data.item.uri,
offset: data.offset
}
this.setState({ selectedSong })
})
}
【问题讨论】:
-
为什么第一个
then是异步的? -
抱歉,已编辑。这个问题真是漫长的一天。
-
我的抓取方式有问题吗?
标签: javascript reactjs spotify es6-promise fetch-api