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