[尝试基于运行session.pingHost的结果设置变量,pingHost函数可以工作,但它没有像我期望的那样设置我的变量。
import ping from 'net-ping';
let TEMPIP = '8.8.8.8';
let session = ping.createSession();
let ipset = false;
session.pingHost(TEMPIP, function(error) {
if (error) {
console.log('Offline');
ipset = false;
} else {
console.log('Alive');
ipset = true;
}
});
console.log(ipset);
结果:
false
"Alive"
预期结果:
"Alive"
true
您必须使用=
而不是==
。==
用于比较,而=
用于将值分配给变量。
ipset
设置为false的原因是,因为在session.pingHost
内部的闭包之前调用console.log,您可以使用]进行测试>
import ping from 'net-ping'; let TEMPIP = '8.8.8.8'; let session = ping.createSession(); let ipset = false; session.pingHost(TEMPIP, function(error) { console.log("CALLED") if (error) { console.log('Offline'); ipset = false; } else { console.log('Alive'); ipset = true; } }); console.log(ipset);
为什么解决当前问题的方法是使用回调函数
import ping from 'net-ping';
let TEMPIP = '8.8.8.8';
let session = ping.createSession();
let ipset = false;
function call_me_if_alive() {
console.log(ipset)
}
session.pingHost(TEMPIP, function(error) {
console.log("CALLED")
if (error) {
console.log('Offline');
ipset = false;
} else {
console.log('Alive');
ipset = true;
call_me_if_alive();
}
});