這是給一個域名爲什麼我得到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());
這是給一個域名爲什麼我得到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());
這不是真的是你的問題的細節的WHOIS代碼。
相反,問題是你不處理JavaScript的非阻塞性質。當您調用k.dom()並返回時,查找調用已啓動,但尚未完成。該呼叫不會等待(「阻止」)答案。相反,當答案最終出現時,作爲查找的第二個參數傳遞的函數將與結果一起調用。在那個函數中,不幸的是,你什麼都不做,所以返回結果就會丟失。
嘗試在打印數據的功能內部放置一些東西,看看會發生什麼。然後想想你將如何構建你的代碼來處理這個問題。
你的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);
});
你能提供一個可用的JSFIDDLE嗎? –
whois.lookup使用回調。你從dom()中沒有返回任何東西 –