Search code examples
node.jsrequire

checking when a function in required file is used


I use a js file with a couple of functions in node which works great. But one of this functions needs to trigger a function in my main js file, and I cannot figure out how to solve this.

So I have my main.js

const externalObject = require('objectJS');
let myfunctions = require('./stuff/myFunctions.js');

myFunctions.doSomething();

and the myFunctions.js

module.exports =  {
    doSomething: function() {
        doSomethingElse();
        return data;
    }
}

function doSomethingElse() {
    //do some stuff
    if (a) {
        return something;
    } else {
        externalObject.action()
       //or
       //inform main.js to do something with externalObject
   }
}

My Problem is that I have no idea how to access that external object in myFunctions.js (I cannot require it there), or how to inform my main.js that this object needs to be updated.

Any advice on this one?


Solution

  • Pass the function externalObject.action itself as a parameter to doSomethingElse.

    const externalObject = require('objectJS');
    let myfunctions = require('./stuff/myFunctions.js');
    
    myFunctions.doSomething(externalObject.action);
    

    The module needs to process the callback parameter accordingly:

    module.exports =  {
        doSomething: function(callback) {
            doSomethingElse(callback);
            return data;
        }
    }
    
    function doSomethingElse(callback) {
        //do some stuff
        if (a) {
            return something;
        } else {
            callback()
           //or
           //inform main.js to do something with externalObject
       }
    }
    

    By doing so, externalObject.action is called from inside the module and you can update the externalObject from within the externalObject.action as needed.