我正在使用JS(Electron,Node.js)中的项目进行工作,该项目需要检查Windows注册表中是否存在注册表项。 这是我的代码:
function IsSettedUp() {
regedit.list('HKCU\\SOFTWARE')
.on('data', function (entry) {
//Returns Keys
console.log(entry.data.keys)
//Checks if "WinXSoft" appears in the entry.data.keys array
var key = $.inArray("WinXSoft", entry.data.keys)
console.log(key)
//Returns false if WinXSoft wasn't found
if (key == -1) {
return false
}
//Returns true if WinXSoft was found
else {
return true
}
})
}
//Should be true or false according to the WinXSoft key
var z = IsSettedUp();
console.log(z)
当我创建密钥并运行代码时,这是输出:
console.log(entry.data.keys)
输出Array(42)
。(预期)
console.log(key)
输出13
(预期)
console.log(z)
输出undefined
(???,应该为真)
是的,你们知道我该怎么解决吗?
答案 0 :(得分:1)
尝试从on
函数中返回值
function IsSettedUp() {
var result = false;
regedit.list('HKCU\\SOFTWARE').on('data', function (entry) {
//Returns Keys
console.log(entry.data.keys)
//Checks if "WinXSoft" appears in the entry.data.keys array
var key = $.inArray("WinXSoft", entry.data.keys)
console.log(key)
//Returns false if WinXSoft wasn't found
if (key == -1) {
result = true;
}
//Returns true if WinXSoft was found
else {
result = false;
}
});
return result;
}
答案 1 :(得分:0)
这是因为z是IsSettedUp
return的值,该值不存在,因此未定义。
true
是提供给on
函数的回调的返回值。
function IsSettedUp() {
regedit.list('HKCU\\SOFTWARE')
.on('data', function (entry) {
//Returns Keys
console.log(entry.data.keys)
//Checks if "WinXSoft" appears in the entry.data.keys array
var key = $.inArray("WinXSoft", entry.data.keys)
console.log(key)
//Returns false if WinXSoft wasn't found
if (key == -1) {
return false
}
//Returns true if WinXSoft was found
else {
return true
}
})
return 'test' // ADD THIS RETURN
}
//Should be true or false according to the WinXSoft key
var z = IsSettedUp();
console.log(z)
尝试这段经过编辑的代码,看看z
的值现在出来了,在函数的末尾添加了一行
答案 2 :(得分:0)
在function (entry) {
内部返回true或false。 function IsSettedUp() {
之外没有返回任何内容,因此返回值为默认值undefined
。格式化代码可以使函数作用域清晰明了。
答案 3 :(得分:0)
我没有找到解决此问题的方法,所以我决定给我们另一个可以正常工作的库。