我正在构建一个Spotify应用程序,并且想要推出专辑。我的JSON数据指定了专辑,因此我使用简单的for
循环遍历它们。但是,与通过track.data.album.name
直接提供的曲目数据不同,专辑数据需要通过回调提取:
var a = models.Album.fromURI(appData.Albums[i].uri, function(album) {
console.log("Album data: ", album.name);
});
这可以正常工作,控制台显示相册名称,但我找不到任何有关如何在回调函数之外使数据可用的示例。 a.uri
似乎是唯一有效的方法:
var a = models.Album.fromURI(appData.Albums[i].uri, function(album) {
//console.log("Album data: ", album.name);
});
console.log("Album data: ", a.uri);
有人能指出我正确的方向吗?如果这是一个Spotify应用程序问题,或者我应该在回调中使用闭包或匿名函数,我有点困惑。
答案 0 :(得分:0)
从models.Album.fromURI()
返回的内容与回调中传递给您的对象相同:
var a = models.Album.fromURI("spotify:album:1KtFTJnuQbMDpKJRHQonYZ", function(album) {
console.log(a === album);
// ^Logs "true"
});
uri
属性可以立即使用,因为它已经知道 - 您可以将URI提供给对象。其余的元数据是异步加载的,一旦触发回调,它将在原始a
对象中可用。在回调中,您可能希望调用另一个实际更新URI的函数或下一步需要执行的操作。