2016-08-19 4 views
-1

私は現在、次の(単純化された)コードを2つのAjax呼び出しで使用しています。拡張可能)。

function f1(ID) { 
    return $.ajax({ 
     url: "'/ajax/getF1/')?>" + '/' + ID, 
     dataType: "json"  
    }); 
} 

function f2(ID) { 
    return $.ajax({ 
     url: "'/ajax/getF2/')?>" + '/' + ID, 
     dataType: "json"  
    }); 
} 

$.when(
    f1(ID), 
    f2(ID) 
).done(function(a1,a2) { 
    ....do something... 
}); 

私の質問は、2つの名前付き関数f1とf2をどのようにしてインラインと呼ばれる匿名関数にするかです。単にf1をf1関数の内容で置き換えるだけでは機能しません。

これは単純なはずですが、それは私を逃しているようです。

+0

'関数(ID){/ * F1コード* /}、機能(ID){/ * f2のコード* /}' – Pointy

+0

は '>'なしでは何をしているのですか?その前に '<?php'をマッチさせますか? – Barmar

+0

一般的な規則(関数に副作用がなく、返り値だけを実行すると仮定します) 'f()'が 'A'を返し、' g(f()) 'を呼んでいる場合、' g(A) ' 'f()=== A'のためです。基本的には、何かを返す関数を呼び出す場合は、 'return'キーワードを削除した後に、関数呼び出しの代わりに何かを置くことができます。 –

答えて

4

約束は$.when()に渡します。あなたができることはこれです:

$.when($.ajax(...), $.ajax(...)).then(...) 

中間の機能は必要ありません。

+0

@Cruachan - これはあなたの問題を解決しましたか? – jfriend00

1

ちょうど行います

$.when(
    $.ajax({ 
    url: "'/ajax/getF1/')?>" + '/' + ID, 
    dataType: "json"  
    }), 
    $.ajax({ 
    url: "'/ajax/getF2/')?>" + '/' + ID, 
    dataType: "json"  
    }) 
).done(function(a1,a2) { 
    ....do something... 
})