0
我想構建一個小電子應用程序。它從用戶那裏獲取文件/文件,然後將它們複製到特定文件夾,並將有關該文件的所有信息添加到數據庫。變量給我錯誤的值裏面的函數內循環
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等)。
*「這將形成一個封閉......」*這*不會*形成封閉。它*將*在當前詞法環境而不是全局環境中聲明變量。函數聲明是創建詞彙環境或「閉包」的原因。另外,w3schools可能不是最好的參考。 –
謝謝,我不知道有這麼多的差異(這裏仍然是一個noob)。我沒有得到的是即使這是創建一個全局變量,爲什麼它不起作用。我會假設對於每個文件,它會將變量更改爲當前文件,用它來做東西,然後在下一個文件中再次更改,等等。我正在閱讀使用vs vs vs不是,試圖理解它,但如果你能解釋事情出了什麼問題,那將是非常有用的。 –
它是異步的。當你的錯誤處理程序被調用時,'each'循環可能已經移到其他記錄上,以錯誤處理程序不期望的方式更新'currentFile'變量。 –