nodejs函数未设置变量,net-ping



试图根据运行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);
});

最新更新