Nodejs回调函数

时间:2018-07-17 15:24:32

标签: javascript node.js

嗨,我正在尝试从nodejs ping端口。我使用tcp-ping模块。我想从tcp.probe函数返回可用值。但是我不能。 这是我的代码

var tcpp = require('tcp-ping');
function ping_port(callback){
tcpp.probe('10.5.177.52', 8080, function(err, available) {

    return_value = available;
    callback(available);
});
    }
function read() {
    console.log("Read done")
  return return_value;
 }
module.exports.ping = function()
{
    var port_status = ping_port(read);
    console.log(port_status);
    return port_status;

}

我通过等待return_value变量不等于undefined来解决我的问题。这是我的代码。

var tcpp = require('tcp-ping');
var return_value;

module.exports.ping = async function(page,ip)
{
   tcpp.probe(ip, 8080, function(err, available) {
    return_value = available;
}); 
 while(return_value === undefined)
 await page.waitFor(100);
 return return_value;
}

页面是操纵a模块的功能。我从主要异步函数调用await foo.ping('page' , 'ip')并完成了它。 我对我的英语和编码不好感到抱歉。我是编码初学者。

1 个答案:

答案 0 :(得分:1)

您不能从异步函数返回值。而是使模块的用户将回调传递给ping函数。

module.exports.ping = function(callback)
{
 ping_port(callback);
}

像这样使用它:

function foo(port_status) {
    console.log("This is the port status: " + port_status);
}

const ping = require('./your_module');
ping(foo);