我正在尝试构建一个小型电子应用。它从用户获取文件/文件,然后将它们复制到特定文件夹,并将有关该文件的所有信息添加到数据库中。
const fs = require('fs-extra')
//sample 2 file entry
files = {"0":{"name":"File1.png","path":"A:\\User Folders\\Desktop\\File1.png"},"1":{"name":"File2.jpg","path":"A:\\User Folders\\Desktop\\File2.jpg"},"length":2}
window.$ = window.jQuery = require('jquery');
jQuery.each(files, function(file) {
//this is just one of many variables I need
currentfile = files[file].path
fs.copy(currentfile, "./files/"+"."+files[file].name, function (err) {
if (err) {
console.log(err)
} else {
console.log(currentfile);
//I expect this to log file1 then file2 so I can submit it to my database,
//but it always logs file2
}
})
});
一次只能处理一个文件,但是当我尝试处理多个文件时,它不能像我预期的那样工作(复制文件,更新DOM,复制下一个文件,更新DOM等)。
答案 0 :(得分:1)
我认为当你想要本地时,你不小心宣布了一个具有全局范围的变量。
改变这个:
currentfile = files[file].path
到此:
var currentfile = files[file].path
这将形成一个closure,其中处理错误的匿名函数将能够访问处理jquery currentfile
的匿名函数中的each
变量。