所以我有很多功能彼此非常相似。 IE时间通过闭包重构,但我遇到了问题。
我的函数框架代码是这样的(我在javascript中有大量的这个):
function getBlahOutputInThisID(param1, ...., paramN, functionName) {
var jasonArray = {
param1: param1,
param2: param2,
...
}
jQuery.ajax({
type: 'POST',
url: '/blahController/ajax_functionName/',
data: jasonArray,
success: function(data) {
//Some REALLY custom function stuff
}
});
}
因为我有很多这些:
我想知道我是否可以关闭
function closure(paramArray, customFUNCTION) {
return function() {
//getBlahOutputInThisID code (the skeleton code, look above)
}
}
并让它在闭包中调用回调函数customFunction(jQuery.ajax({
部分),即:
success: function(data) {
customFunction()
}
或者这是重构代码的非常棒/坏方法吗?
编辑:感谢您的时间和精力。
答案 0 :(得分:2)
我会推荐这个
答案 1 :(得分:2)
我不确定这里需要两个级别。这就是我看到它的工作方式:
function getBlahOutputInThisID(param1, ...., paramN, functionName, ajaxCallback) {
var jasonArray = {
param1: param1,
param2: param2,
...
}
jQuery.ajax({
type: 'POST',
url: '/blahController/ajax_functionName/',
data: jasonArray,
success: ajaxCallback
}
});
这样你每次都可以这样使用它:
var a;
getBlahOutputInThisID(param1, ...., paramN, functionName,function (data) {
// here is all my custom stuff
// reference var a above as a closure.
});
答案 2 :(得分:1)
我认为这是一个好主意。一旦你知道closure
功能的作用,就会更容易理解整体代码。我也不会称之为“noob”,因为对封闭的充分了解并不是真正的菜鸟。我唯一不同的是,我不会将函数命名为closure
,因为这并没有告诉你它的作用。该名称应表明它正在进行AJAX调用。