当事件发生时调用nodejs中的函数

Call function in nodejs when an event occurs

本文关键字:nodejs 函数 调用 事件      更新时间:2023-09-26

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

您可以在 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);
});

如果扫描程序找到某些内容时只需要调用一个函数,那么您可以使用 b.js 模块中的设置函数来注册回调函数。

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