Javascript 为什么我没有被定义为这个代码的答案?

Javascript 为什么我没有被定义为这个代码的答案?,javascript,node.js,Javascript,Node.js,这是提供域名详细信息的代码 var whois = require('node-whois') function Info() { } Info.prototype.dom =function () { whois.lookup('google.com', function (err, data) { }) } var k = new Info(); console.log(k.dom()); 那不是你的问题 相反,问题在于您没有处理JavaScript

这是提供域名详细信息的代码

var whois = require('node-whois')

function Info() {

}
Info.prototype.dom =function () {
    whois.lookup('google.com', function (err, data) {

        })
    }
var k = new Info();

console.log(k.dom());

那不是你的问题

相反,问题在于您没有处理JavaScript的非阻塞性。当调用k.dom()并返回时,对lookup的调用已开始,但尚未完成。呼叫不会等待(“阻塞”)应答。相反,当最终得到答案时,作为第二个参数传递给lookup的函数将被调用,并显示结果。不幸的是,在该函数中,您什么也不做,因此返回结果将丢失

尝试在输出数据的函数中放入一些内容,看看会发生什么。然后考虑如何构造代码来处理此问题。

您的script.js(模块)

使用你的脚本;不要在定义模块的同一个文件中使用它们,这是一种不好的做法

var script = require('./script');
var k = new script();

k.dom(function(e,d){
    console.log(d);
});

您能提供一个工作的JSFIDLE吗?whois.lookup使用回调。并且从dom()中不返回任何内容
var script = require('./script');
var k = new script();

k.dom(function(e,d){
    console.log(d);
});