javascriptnode.jsdom-eventsserverside-javascript

Pass Callback function to module.exports?


I've written an USB Detection code with module exports , and I'd like to send also a callback function on the event fires.

Here :

module.exports = class USBDetection {
  constructor() {
    this.usb = require('usb');
    this.usbDetect = require('usb-detection');
  }

  startMonitoringDevices() {
    this.usbDetect.startMonitoring();
    // Detect add/insert
    this.usbDetect.on('add', function(device) {
      callback('add', device);
    });
    this.usbDetect.on('add:vid', function(device) {
      callback('add', device);
    });
    this.usbDetect.on('add:vid:pid', function(device) {
      callback('add', device);
    });

  }
};

How can I pass callback to the module ?


Solution

  • module.exports = callback => {
        const usb       = require('usb');
        const usbDetect = require('usb-detection');
    
        return {
            usb,
            usbDetect,
            startMonitoringDevices: () => {
                // Detect add/insert
                usbDetect.on('add', function(device) {
                    callback('add', device);
                });
                ...
                usbDetect.startMonitoring();
            },
        };
    };