变量在for循环中的函数内部给出了错误的值

时间:2016-11-29 00:14:33

标签: javascript electron

我正在尝试构建一个小型电子应用。它从用户获取文件/文件,然后将它们复制到特定文件夹,并将有关该文件的所有信息添加到数据库中。

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等)。

1 个答案:

答案 0 :(得分:1)

我认为当你想要本地时,你不小心宣布了一个具有全局范围的变量。

改变这个:

currentfile = files[file].path

到此:

var currentfile = files[file].path

这将形成一个closure,其中处理错误的匿名函数将能够访问处理jquery currentfile的匿名函数中的each变量。