gpt4 book ai didi

javascript - 变量在 for 循环内的函数内给了我错误的值

转载 作者:行者123 更新时间:2023-12-02 13:53:33 24 4
gpt4 key购买 nike

我正在尝试构建一个小型 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 等)。

最佳答案

我认为当您可能需要本地变量时,您不小心声明了一个具有全局作用域的变量。

更改此:

currentfile = files[file].path

对此:

var currentfile = files[file].path

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

关于javascript - 变量在 for 循环内的函数内给了我错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40855743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com