这可能是一个愚蠢的问题,但由于所有“Closure 101”链接,我似乎无法利用谷歌......
总之,给定依赖于闭包上下文的重复代码,有没有办法将代码去重到函数调用中,同时仍然让新函数只依赖闭包而不是通过参数传递它需要的一切?
一个粗略的代码示例可能如下所示:
function doWork(){
// initialize variables
// manipulate variables
// ...
$.ajax({
//...
success: function(data){
// DUPLICATE CODE INSTANCE 1 HERE
// RELIES ON VARIABLES IN THE CLOSURE
}
});
// More code
$.ajax({
//...
success: function(data){
// DUPLICATE CODE INSTANCE 2 HERE
// RELIES ON VARIABLES IN THE CLOSURE
}
});
}
据我所知,如果我将成功块中的逻辑删除为
function onSuccess(...){
// ...
}
然后 onSuccess 不再是闭包的一部分,因此需要所有闭包变量作为参数传递,当前逻辑正在使用闭包进行访问。
我对闭包的工作方式有误吗?有没有办法将闭包“传递给 onSuccess 函数”而不是传递单个变量?