nodejs函数未设置变量,网络ping

问题描述 投票:0回答:2

[尝试基于运行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
node.js function callback node-modules
2个回答
0
投票

您必须使用=而不是====用于比较,而=用于将值分配给变量。


0
投票

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();
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.