用参数执行回调函数的优雅方式

时间:2018-11-02 11:59:52

标签: javascript angularjs callback

在用例中,我需要执行某些javascript函数以刷新成员数据,这意味着在推送通知到达时,我将不得不调用一个函数。

所以基本上我有一项服务,在其中创建了回调数组和两个函数,一个用于注册回调,另一个用于执行回调。

它看起来像这样:

在共享服务中,我有这个:

var callbacks = [];

function triggerCallback() {
    angular.forEach(callbacks, function(callback) {
        callback(member);
    });
}

function registerCallback(callback) {
    callbacks.push(callback);
}

在成员进入该组件的组件之一中,我注册了函数回调,如下所示:

组件中的代码如下:

$onInit() {
 functionToGetSomethingFromApi(param1, param2);
 sharedService.registerCallback(functionToGetSomethingFromApi);
}

因此,在这里,当成员实际访问执行代码的页面时,我注册回调,而下次访问该页面时,我不再进行相同的api调用,因为我不想对API进行不必要的调用,但是推送通知到达时,我要执行此代码。

因此在我的推送服务中,我有此代码(实际上有效)

pusher.on('notify', function (notification) {
    sharedService.triggerCallback();
});

所以我的问题是,什么是将这两个参数从组件传递到服务并在从某个位置触发回调时实际使用它们的最佳方法?

我知道几种存储方式,我可以保存回调和参数,然后以某种方式执行它,但是我想知道什么是最好的方式...

希望我的问题很清楚,并预先感谢您的回答!

0 个答案:

没有答案