JSはシングルスレッドであるため、2つの別々のajax呼び出しが同時に処理されることは期待できません(AJAX呼び出しは非同期であるため、そうでないことを指定しない限り、回避する必要があります)。また、JSが関数に指定した引数の数を考慮に入れ、両方の引数に値が設定されるまで関数を呼び出さないようにすることはできません。
最後に、質問が実際に何であるかを指定できますか。別の関数を呼び出す方法について質問していますが、どちらの場合も、同じ成功コールバックを渡しているようです。両方の呼び出しで返されると予想されるデータと、送信するデータについて詳しく教えてください。
両方の呼び出しが成功した後にのみ関数を呼び出す場合は、クロージャを使用できます。
var callme = (function()
{
var JSON1, JSON2;
return function(response)//this function will receive each response separately
{
JSON1 = JSON1 || response;//if JSON1 isn't set, assign current response
if (JSON1 !== response)
{//JSON1 was already set, second response is in
JSON2 = response;
//code to process both responses at once goes here
//but make them undefined before returning, if not, a second call won't work as expected
JSON1 = undefined;
JSON2 = undefined;
}
};
}();
$.ajax({url: 'some/url',
data: yourData1,
type: 'GET',
success: callme});
$.ajax({url: 'second/url',
data: yourData2,
type: 'GET',
success: callme});
クロージャ(callme
関数)がAJAX呼び出しの前にあることが重要であることに注意してください。callme
関数が(式として)割り当てられる方法のため、関数宣言は引き上げられません!