2017-02-02 9 views
0

私はnode.js非同期ワールドに苦労しています、私はnode.jsにnoobです私は基本的なプログラムの流れをどのように動かすのか理解していません。私はパッケージのiotdb-arpを使って、ネットワーク上でIPアドレスとMACアドレスを表示します。私はこのコードを実行し、関数スキャンを実行し、変数arrがいっぱいになるまで待ってからarrと終了メッセージを出力する必要があります。私はコールバックを使うべきだと知っていますが、私は本当に失われています。誰かが正しい方向に私を向けることができる、正しい順序で物事を実行する方法?今度は "[+]プログラムの起動"を実行すると、 "このマシンのIP:192.168.1.2"と表示され、スキャンが実行されますが、プログラムは同時に終了します。ここに私のコードです:Node.jsが基本コードで正しい順序で物事を動かす

console.log("[+] Program start"); 
var ip = require('ip'); 
var browser = require('iotdb-arp'); 
var arr = []; 

var myIp = ip.address(); 

console.log("IP of this machine is : " + myIp.toString()); 

function scan(){ 
browser.browser({},function(error, data) { 
    if (error) { 
     console.log("#", error); 
    } else if (data) { 
     console.log(data); 
     arr.push(data); 

    } else { 

    }  
}); 
} 

/*function callback(){ 
    console.log(arr); 
    console.log("[+] Program End"); 
}*/ 

scan(); 
console.log(arr); // Here in the end i need print arr 
console.log("[!] Program End"); // Here I need print message "[+] Program End" 
+0

これはできません。コールバックを使用する必要があります。 – SLaks

答えて

0

"ブラウザ"呼び出しの関数パラメータはコールバックです。つまり、「ブラウザ」機能が終了すると、挿入したパラメータ関数が呼び出されます。これは「スキャン」機能で行う必要があります。

console.log("[+] Program start"); 
var ip = require('ip'); 
var browser = require('iotdb-arp'); 
var arr = []; 

var myIp = ip.address(); 

console.log("IP of this machine is : " + myIp.toString()); 

function scan(callb){ 
browser.browser({},function(error, data) { 
    if (error) { 
     console.log("#", error); 
     callb(err); 
    } else if (data) { 
     console.log(data); 
     arr.push(data); 

    } else { 
     callb() 
    }  
}); 
} 


scan(function(err){ 
    if(err) {return;} /// handle error here 
    else { 
    console.log(arr); // Here in the end i need print arr 
    console.log("[!] Program End"); // Here I need print message "[+] Program End" 
} 


}); 
+0

ディオン、ありがとう、それはずっと良いですが、それはcallb()が2回実行されたように見えます。私の出力の短い例です:{ip: '192.168.1.1'、 mac: '9C:5C:8E:C7:44:88'、 インターフェイス: 'EN0' 見:[!] 1486054726758} プログラム終了{IP: '192.168.1.1'、 MAC: '9C:5C:8E:C7:44:88'、 インタフェース 'EN0'、 見た:1486054729261} [!]プログラム終了 – Mischa

関連する問題