发生事件时在nodejs中调用函数

时间:2016-02-24 17:33:03

标签: javascript node.js

我正在使用后端(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

2 个答案:

答案 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并发出附加扫描仪数据的事件,以便任何侦听器都能看到新的扫描仪数据。