我正在努力使用node.js异步世界,我是node.js中的noob。我不明白如何推动基本的程序流程。我使用package iotdb-arp在网络上打印ip地址和mac地址。我需要运行此代码,执行函数扫描,等待变量arr已满,然后打印arr和结束消息。我知道我应该使用回调,但我真的迷路了。有人能指出我正确的方向,如何按正确的顺序运行?现在当我执行它打印" [+]程序启动",然后它打印"这台机器的IP是:192.168.1.2"然后扫描执行但程序同时进行,arr为空,因为扫描仍在运行。这是我的代码:
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 :(得分: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"
}
});