2012-10-19 30 views
1

所有我想要做的就是从音乐库列表中的文件。我想列出文件的路径,作者和标题。 Windows 8 JavaScript API提供了整齐的异步功能。我的问题是我无法传递一个变量给函数,所以我无法识别回调函数中的文件。这是我到目前为止有:如何在使用javascript的Windows 8 metro应用程序中获取mp3文件的文件名和id3标签?

var musicLibrary = Windows.Storage.KnownFolders.musicLibrary; 
musicLibrary.getFilesAsync().then(function (resultLibrary) { 
for (var i = 0; i < resultLibrary.length; i++) { 
    var path = resultLibrary[i].path; 
    resultLibrary[i].properties.getMusicPropertiesAsync().then(function (musicProperties) { 
    $("#list").append('<li>'+ musicProperties.artist + ', ' + musicProperties.title + '</li>'); 
} 
}); 

正如你所看到的,我可以检索每一个信息,我不能把它们放在一起,以一个列表项。谁能告诉我这是怎么完成的?谢谢!

回答

1

您可以使用JavaScript中closure

var musicLibrary = Windows.Storage.KnownFolders.musicLibrary; 
musicLibrary.getFilesAsync().then(function (resultLibrary) { 

    for (var i = 0; i < resultLibrary.length; i++) { 
    (function(song){ 
     var path = song.path; 
     song.properties.getMusicPropertiesAsync().done(function (musicProperties) { 
      $("#list").append('<li>' + song.path + musicProperties.artist + ', ' + musicProperties.title + '</li>'); 
     }) 
    })(resultLibrary[i]); 
    } 
}); 
+0

它的工作,谢谢!我现在要看看关闭的东西。 –

相关问题