【发布时间】:2014-04-09 17:28:34
【问题描述】:
我知道这可能是重复的,但我就是不知道该怎么做(相信我,我已经搜索过了,我试图摆弄代码)。我有以下代码,它正在构建一个文件表,您可以将这些文件拖放到应用程序中。
function CreateTrackTable (data, length) {
var fs = require('fs'),
mm = require('musicmetadata'),
i = 0;
for (i; i < length; ++i) {
var mimeType = data.dataTransfer.files[i].type;
if (mimeType == "audio/mp3" || mimeType == "audio/x-m4a"){
FilePath = data.dataTransfer.files[i].path;
var parser = mm(fs.createReadStream(FilePath));
parser.on('metadata', function (result) {
if (result.picture.length == 0) {
$("#track-table").append('<tr path="'+ FilePath +'"><td></td></tr>');
}else{
var picture = base64ArrayBuffer(result.picture[0].data);
$("#track-table").append('<tr path="'+ FilePath +'"><td></td></tr>');
}
});
}
}
}
问题是 FilePath 变量是可访问的,但是它“打印出”总是相同的路径,而不是循环 i 所尊重的路径。
该应用程序是使用 nodo-webkit 构建的,一切正常,这是我唯一想不通的问题。
感谢您的帮助!
【问题讨论】:
-
您要查找的关键字是
closurestackoverflow.com/questions/750486/… BTW,在这里您应该使用var FilePath在全局范围内不设置变量,即使使用闭包也可以解决此问题 -
看看能不能从
result的元数据中得到你想要的路径。.on()是一个事件处理器,所以它是异步的,不是线性的。 -
这里应该可以工作:jsfiddle.net/EUh3m(应该使用 pasteBin... 太晚了)。它正在关闭 A. Wolff 发布的链接。
标签: javascript jquery node.js node-webkit