2017-08-06 115 views
-4

這是給一個域名爲什麼我得到undefined作爲這段代碼的答案?

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()); 
+0

你能提供一個可用的JSFIDDLE嗎? –

+1

whois.lookup使用回調。你從dom()中沒有返回任何東西 –

回答

1

這不是真的是你的問題的細節的WHOIS代碼。

相反,問題是你不處理JavaScript的非阻塞性質。當您調用k.dom()並返回時,查找調用已啓動,但尚未完成。該呼叫不會等待(「阻止」)答案。相反,當答案最終出現時,作爲查找的第二個參數傳遞的函數將與結果一起調用。在那個函數中,不幸的是,你什麼都不做,所以返回結果就會丟失。

嘗試在打印數據的功能內部放置一些東西,看看會發生什麼。然後想想你將如何構建你的代碼來處理這個問題。

0

你的script.js(模塊)

var whois = require('node-whois'); 

function Info() { 

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

module.exports = Info; 

使用腳本;不要在你定義模塊的同一個文件中使用它們顯示不好的做法。

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

k.dom(function(e,d){ 
    console.log(d); 
}); 
相關問題