Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

why are the modules not return in the callback? #4

Closed
alvarolorentedev opened this issue May 3, 2016 · 8 comments
Closed

why are the modules not return in the callback? #4

alvarolorentedev opened this issue May 3, 2016 · 8 comments

Comments

@alvarolorentedev
Copy link

so i have my use case where i need to call some functions common to my modules during execution. I am finding that this seems not actually possible as in the callback the return values are a list of the 'dependencies'.

function loadPlugin(context, results, callback) {
    var modules = []
    var dependencies = []
    try {
            ...
            var Plugin = require(file)
            var mod = new Plugin(context.appContext)
            modules.push(mod)
            dependencies.push(depName)
        }
    } catch (err) {
        return callback(err)
    }

    callback(null, dependencies)
}

is there any why the modules collection should not be returned in the callback?

@justinmchase
Copy link
Contributor

That would probably be ok but you can also add things onto the context.appContext.

var appContext = {
  common: function (dep) { console.log(dep); }
}

loadPlugins({ appContext: appContext }, results, callback);

Then in your plugin:

module.exports = function (context) {

   context.common(this); // do your common stuff here...

};

@alvarolorentedev
Copy link
Author

yes but i am trying to do a crossplatform social network manager, so i need access to a plugin for example to post.
That in my brain feels like a direct request from the app side towards the plugin itself. It feels not natural to do a double indirection to achieve it if i know all my plugins have the same signature.
Thanks for the fast reply 👍

@justinmchase
Copy link
Contributor

Can you give a little code snippet with what you want to do with it?

@alvarolorentedev
Copy link
Author

alvarolorentedev commented May 4, 2016

yes of course, first of course i will load the plugins and keep a reference to the collection

view.document.addEventListener('DOMContentLoaded', function () {
plugins.load(context, (err, ids, plugins) => {
                if(err)
                    return;
                this.pluginsHolder = plugins;
            });
});

each plugin contains a social network, each of the plugins export a class with the same signature. So i can do something like:

function postData()
{
       for (var i = 0; i < this.pluginsHolder.lenght; ++i) {
                this.pluginsHolder[i].post('Hello World');
       }
}

@justinmchase
Copy link
Contributor

justinmchase commented May 5, 2016

Oh ok! I'm glad you provided that snippet. You're just saying that you want the modules to also be added as a parameter to the callback?

e.g.

callback(null, dependencies, modules)

That would be pretty easy and backward compatible if you say yes I can publish this change pretty fast.

@alvarolorentedev
Copy link
Author

yes that us exactly what i was thinking about :). if you publish that change it will be really helpful for me.

@justinmchase
Copy link
Contributor

Published in v0.1.0

@alvarolorentedev
Copy link
Author

thanks a lot :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants