lundi 31 août 2015

Parse data and share it in different modules

I wnat to use the following code from other so post and I wanted to know if its good practice to use it like following since I used a global field cacheObj I need to parse the data and share it between other modules,any module can take any property but only the first module which called to this parser is responsible to provide the data to parse(I need to do this parse just once and share properties in different modules)

var Parser = require('myParser'),
    _ = require('lodash');

var cacheObj; // <-- singleton, will hold value and will not be reinitialized on myParser function call

function myParser(data) {
    if (!(this instanceof myParser)) return new myParser(data);
    if (!_.isEmpty(cacheObj)) { 
        this.parsedData = cacheObj; 
    } else {
        this.parsedData = Parser.parse(data);
        cacheObj = this.parsedData; 
    }
}

myParser.prototype = {
    //remove `this.cacheObj`
    getPropOne: function () {
        return this.parsedData.propOne;
    },

    getPropTwo: function () {
        return this.parsedData.propTwo;
    }
};

module.exports = myParser;

Aucun commentaire:

Enregistrer un commentaire