当你有这样的代码时:
$.ajax({
type: 'POST',
url: 'some_url1',
data: 'some data',
success: function(data){
$.ajax ({
type: 'POST',
url: 'some_url2',
data: 'some data',
success: function(data){}
});
}
});
应该跳出来的第一件事是重复的数量。您基本上有两个几乎相同的代码块。除非有很好的理由说明它应该被复制(例如,如果两个代码块负责两个不同的业务所有者/角色并且很可能彼此独立地更改),那么将复制的代码抽象为一个函数.
在这种情况下,两个重复的代码块之间只有两个区别:
- 网址
- 成功回调
因此,您从重复代码中提取的函数应该接受这两个参数作为参数:
var makeAjaxCall = function (url, success_callback) {
$.ajax ({
type: 'POST',
url: url,
data: 'some data',
success: success_callback
});
};
然后您的示例将像这样调用该函数:
makeAjaxCall(
'some_url1',
makeAjaxCall(
'some_url2',
function() {}
)
);
请注意,在您的示例中,您将data
参数传递给回调函数,尽管您没有使用它。出于问题的目的,这是一个最小的人为示例吗?实际上,您正在使用该参数?如果是这样,那么提取的函数也需要处理它。但在您这样做之前,您需要更明确一点,因为您的示例在这方面令人困惑,并且可能以意想不到的(或至少不直观的)方式表现。当你的内部 AJAX 成功回调接收到它的data
参数时,你希望它是内部 AJAX 调用的结果吗?还是您希望它data
是传递给包含内部 AJAX 调用的函数的参数?代码中的意图不清楚。