试图根据运行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
添加我如何让它工作的代码
function pingfunction(TEMPIP) {
return new Promise(function(resolve, reject) {
session.pingHost(TEMPIP, function(error) {
if (error) {
console.log('Offline');
reject(false);
} else {
console.log('Alive');
resolve(true);
}
});
});
}
pingfunction(TEMPIP)
.then(function(result) {
console.log(result);
})
.catch(function(err) {
console.log(err);
});
您必须使用=
而不是==
==
用于比较,而=
用于为变量赋值。
ipset
设置为false的原因是,对console.log的调用是在回调session.pingHost
之前调用的。您需要将调用移动到"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);
});