Javascript 创建自己的回调

Javascript 创建自己的回调,javascript,jquery,Javascript,Jquery,我有一个带有jQuery的页面,还有一个单独的非jQuery函数 当前,我的函数在$(document).ready上运行,但我想在函数完成后立即调用jQuery函数。我可以将我的函数作为回调传递给任何jQuery函数,但是如何设置其他方式呢 因此,我很想知道如何创建一个函数foo来为我解决这个问题: $(document).ready(function() { foo(myfunction(), $(bar).something); } 或者如何扩展现有函数来处理回调。谢谢。您所要做的就

我有一个带有jQuery的页面,还有一个单独的非jQuery函数

当前,我的函数在$(document).ready上运行,但我想在函数完成后立即调用jQuery函数。我可以将我的函数作为回调传递给任何jQuery函数,但是如何设置其他方式呢

因此,我很想知道如何创建一个函数foo来为我解决这个问题:

$(document).ready(function() {
  foo(myfunction(), $(bar).something);
}

或者如何扩展现有函数来处理回调。谢谢。

您所要做的就是创建自定义方法以接受另一个变量……在本例中,是函数引用

如果你有这样的东西:

var add = function(a, b){
    return a+b;
};
要添加回调,请将其更改为:

var add = function(a, b, callback){
    callback();
    return a+b;
};

(非常糟糕的示例,但它能说明问题)

定义函数以接受(可选)回调,然后在回调存在时使用javascript或方法。要保留上下文,请将
this
(或任何您想要的上下文)的当前值传递给apply方法。Call()和apply()根据参数的传递方式不同而有所不同

function myfunction(callback) {
    // do stuff
    if (callback) 
        callback.apply(this);
}

关于函数包装:

Function.prototype.appendCallback = function(callback){
  var fn = this;
  return function(){
    fn.apply( this, arguments ); // execute original function
    callback.call(this);         // then the callback
  };
};
例如:

var newConfirm = window.confirm.appendCallback(function () {
  alert('after from callback');
});

newConfirm('hello?'); // shows a confirmation, and then executes the callback.

使用jQuery执行此操作的时间足够长,您会发现丢失上下文(这)将成为一个真正的问题。