2017-08-06 15 views
-4

これは本当にあなたの問題ではないドメイン名このコードの答えとして定義されていないのはなぜですか?

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()を呼び出すと、ルックアップの呼び出しが開始されましたが、完了していません。コールは応答を待機しません(「ブロック」)。むしろ答えが最終的に来ると、lookupの第2引数として渡した関数が結果とともに呼び出されます。その関数では、残念なことに、あなたは何もしないので、戻り値は失われます。

データを出力して何が起こるかを確認する関数の中に何かを入れてみてください。次に、これに対処するコードをどのように構造化するかを考えてみましょう。

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); 
}); 
関連する問題