我正在分配一个变量,代理,等于一个数组。我试图在稍后的时间点向该数组添加项目,然后在其他文件中访问该数组。
问题是,proxyHelper.proxies值没有更新以反映代理变量的值。
修改数组后,console.log(proxies)返回修改后的数组,但console.log(proxyHelper.proxies)返回空白。我需要访问其他文件中的proxyHelper.proxies值,这样你就可以看出这是一个问题。
我在其他地方使用类似的代码并且工作正常 - 我没看到什么?
var proxies = [];
proxyHelper.proxies = proxies;
proxyHelper.tester = function(win) {
electron.ipcMain.on('saveProxies', function(event, data) {
// Clear the previous proxies from list
proxies = [];
// Split proxies based on line breaks
if (data != '') {
let proxiesList = data.split('\n');
// i<= because we want to run a check to see if all proxies are added
for (let i = 0; i <= proxiesList.length; i++) {
// if the for loop hasn't ran through all proxies
if (i + 1 <= proxiesList.length) {
proxies.push(proxiesList[i]);
}
// Once it's loop through all proxies
else {
//Returns nothing
console.log(proxyHelper.proxies);
//Returns array with added items
console.log(proxies);
win.webContents.send('goodProxies', 'Saved!');
}
}
} else {
win.webContents.send('emptyProxies', 'Empty.');
}
})
}
答案 0 :(得分:2)
proxies = [];
您刚刚为此变量分配了一个新数组。
proxyHelper.proxies
仍然指向上一个值,并且不受影响。
你应该总是使用一个变量,或者改变它而不是重新分配它。
答案 1 :(得分:1)
以下是您的代码中发生的事情:
proxyHelper.proxies = []; // resets the object's property to a new empty array
因此,当您访问&#34; proxyHelper.proxies&#34;时,您始终会访问从未修改过的原始空数组...
你应该做的是:
{{1}}
答案 2 :(得分:0)
不需要proxy
变量,因为其更改未反映到proxyHelper.proxies
只需使用proxyHelper.proxies
本身
此外,我已经清理了你的代码一点点
您可以使用大量的Array方法,而不是for
循环
proxyHelper.proxies = []
proxyHelper.tester = function(win) {
electron.ipcMain.on('saveProxies', function(event, data) {
//Split proxies based on line breaks
if (data != '') {
let proxiesList = data.split('\n');
proxiesList.forEach(function(proxy) {
proxyHelper.proxies.push(proxy)
})
win.webContents.send('goodProxies', 'Saved!');
} else {
win.webContents.send('emptyProxies', 'Empty.');
}
})
}