jQuery(或干净的JS) - 为任何函数参数添加回调

时间:2015-09-18 14:17:57

标签: javascript jquery callback

我想要的是这样的:

function bindFunctions(bindFunction, callbackFunction) {
   // Add binding so that I can call the callbackFunction if the bindFunction is called
}

function log(message) {
    console.log(message);
}

function notifyUser() {
    alert('Something');
}

bindFunctions(log, notifyUser);


log('Error'); // Now the notifyUser-functions should be called and "Something" printed to the alert-box

bindFunctions($('.element').click, function() {/* CODE */}); // Or this: but I don't know if this is even possible because this is not the event-function but the binding-function of the click-event

重要提示:我对bindFunction没有任何影响,因此无法在那里实施触发器。

它是对任何现有功能的回调附件。你知道这是怎么回事吗?

2 个答案:

答案 0 :(得分:1)

我相信你以错误的方式看待它。你需要的是一些好的dependency inversion。无论代码需要log必须从更高级别的组件(例如应用程序的组合根)接收它。然后,您可以自由地实现一个直截了当的wrapper来调用notifyUserinject而不是实际的log

我已经将一些文章与OO视角联系起来,但可以随意转换为更具功能性的模型(这些方法是等效的)。在您的情况下,您使用闭包(在特定光线下,#34;等效"对于使用单一匿名方法的对象)。

答案 1 :(得分:-1)

向函数添加回调的方法是:

var foo = function(number, callback){
    number += 2;
    callback(number);
}

foo(2, function(result){
    window.alert(result)
});

https://jsfiddle.net/6dpz88md/

祝你好运