我正在使用后端(a.js)和前端(b.js)进行子网扫描。
这里的问题是可变数据在a.js中可用,但我需要在b.js中使用它。我认为如果我在b.js中编写一个函数是最好的,当a.js中的扫描器找到某些东西时会调用它。但我不知道在Nodejs中这是可能的。
---a.js---
exports.scan = function() {
scanSubnet();
var data = [ip, port,...];
//when the scanner finds something it is stored in the variable data
//now the data should be availiable in b.js
}
---b.js---
var sc = require('./a.js');
sc.scan();
//i need a function here which is called when the scanner finds something
//so i can work with the variable data
答案 0 :(得分:0)
您可以在a.js中更改扫描功能以接受回调并使用数据调用它。
---a.js---
exports.scan = function(callback) {
scanSubnet();
var data = [ip, port,...];
callback(data);
}
---b.js---
var sc = require('./a.js');
sc.scan(function(data){
console.log(data);
});
答案 1 :(得分:0)
如果在扫描仪找到某些东西时只需要调用一个函数,那么你可以使用b.js模块中的setup函数来注册一个回调函数。
---b.js---
var scannerCallback;
module.exports.setScannerCallback = function(cb) {
scannerCallback = cb;
}
var sc = require('./a.js');
sc.scan();
//i need a function here which is called when the scanner finds something
//so i can work with the variable data
if (scannerCallback) {
scannerCallback(pass scanner data here)
}
如果扫描仪数据可能有多个侦听器,那么您可能需要使用eventEmitter并发出附加扫描仪数据的事件,以便任何侦听器都能看到新的扫描仪数据。