【发布时间】:2019-02-27 07:57:48
【问题描述】:
我目前正在使用 Spotify API 和 nodejs 包装器构建一个 Web 应用程序......但是,当我使用 $.getJSON() 时,.then 会在承诺解决之前触发。 例如,在我跳到下一首歌曲后,我试图更改网页上显示的专辑插图。但是,艺术品首先在歌曲之前发生变化,因此艺术品始终是上一首歌的...我的代码在下面。
index.js 中的路由:
router.get('/skipToNext', function skipToNext(req, res, next) {
spotifyApi.skipToNext()
.then(function(data) {
res.json(data.body);
}, function(err) {
console.log("Something went wrong! ", err);
});
});
我的跳过歌曲的功能:
function skipToNext() {
$.getJSON('/skipToNext')
.then(function() {
changeAlbumArt();
}, function(err) {
console.log("error! ", err);
});
};
changAlbumArt:
function changeAlbumArt() {
$.getJSON('/currentPlayback')
.then( function(data) {
console.log("Change album art: " + data);
var albumCover = data.item.album.images[0];
var albumName = data.item.album.name;
var albumCoverUrl = albumCover["url"];
console.log("url: " + albumCoverUrl);
console.log("album name: " + albumName);
console.log("now playing: " + data);
$(".container-album-cover").css("background", "url(" + albumCoverUrl + ")");
});
};
谢谢大家的回答!
【问题讨论】:
-
$.getJSON('/skipToNext').then(function()...为什么不使用来自 API 的数据(函数参数为空)?changeAlbumArt怎么知道你提取了什么? -
在您调用 spotify api 后,路由器会立即停止返回什么?
-
res.json(data.body)到底是做什么的? -
$.getJSON('/skipToNext').then(function()... 不返回数据,我已经这样做了,作为一种解决方法... changeAlbumArt 有另一个调用获取所需数据的 api。我已将该代码放在上面
-
使用 async/await 很容易解决。
标签: javascript jquery json node.js