これはばかげた質問かもしれませんが、「Closure 101」リンクがすべてあるため、Google を活用できないようです...
要約すると、クロージャー コンテキストに依存する重複コードが与えられた場合、必要なものすべてをパラメーター経由で渡すのではなく、新しい関数をクロージャーのみに依存させながら、コードを関数呼び出しに重複排除する方法はありますか?
大まかなコード例は次のようになります。
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 関数に「クロージャーを渡す」方法はありますか?