0

我正在构建一个 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 应用程序问题,或者我是否应该在回调中使用闭包或匿名函数,我有点困惑。

4

1 回答 1

0

你得到的东西models.Album.fromURI()是在回调中传递给你的同一个对象:

var a = models.Album.fromURI("spotify:album:1KtFTJnuQbMDpKJRHQonYZ", function(album) {
    console.log(a === album);
    // ^Logs "true"
});

uri属性立即可用,因为它是已知的——您将 URI 提供给对象以开始。其余的元数据是异步加载的,a一旦回调被触发,就会在原始对象中可用。在回调中,您可能想要调用另一个函数来实际更新您的 URI 或您接下来需要做的任何事情。

于 2012-08-08T17:10:49.103 回答