次のようなコードがある場合:
$.ajax({
type: 'POST',
url: 'some_url1',
data: 'some data',
success: function(data){
$.ajax ({
type: 'POST',
url: 'some_url2',
data: 'some data',
success: function(data){}
});
}
});
最初に飛びつくのは、重複の量です。基本的に、ほぼ同一のコード ブロックが 2 つあります。複製する必要がある非常に正当な理由がない限り (たとえば、2 つのコード ブロックが 2 人の異なるビジネス オーナー/ロールに責任があり、互いに独立して変更される可能性が非常に高い場合)、複製されたコードを単一の関数に抽象化します。 .
この場合、複製された 2 つのコード ブロックの違いは 2 つだけです。
- URL
- 成功のコールバック
したがって、複製されたコードから抽出した関数は、次の 2 つをパラメーターとして受け入れる必要があります。
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 呼び出しを含む関数に渡されたパラメーターにしたいですか? コードでは意図が不明です。