典型的なREST標準に従って、リソースを分けて別々のエンドポイントとコールに分割しました。ここで問題となる主な2つのオブジェクトは、List
とItem
です(もちろん、リストにはアイテムのリストとそれに関連する他のデータもあります)。クリーンな非同期ループを作成するには?
ユーザーが自分のリストを取得したいのであれば、彼はその後、ユーザはこれらのリストのいずれかでアイテムを取得したいと4が見つかったapi/ListItems/4
に取得するかもしれないapi/Lists
にGET要求を行う可能性があります以前の呼び出しで取得されたList.listId
から属性が$.ajax
の場合、コールバックメソッドをポイントできるので、これら2つのイベントを合理化できます。
しかし、私がのすべての要素を取得したい場合、物事は非常に乱雑になります。問題のリスト。例えば、私はmakeGetRequest
というライブラリ関数を持っていて、このコードをきれいにするためにエンドポイントとコールバック関数をとっているとしましょう。単純にこの3つの要素素朴な方法の結果を取得:
var success1 = function(elements){
var success2 = function(elements){
makeGetRequest("api/ListItems/3", finalSuccess);
}
makeGetRequest("api/ListItems/2", success2);
}
makeGetRequest("api/ListItems/1", success1);
嫌!これは、私たちが手首を突き抜けてループを指し示しているプログラミング101のものです。しかし、どのように外部ストレージに頼ることなく、ループでこれを行うことができますか?
for(var i : values){
makeGetRequest("api/ListItems/" + i, successFunction);
}
function successFunction(items){
//I am called i-many times, each time only having ONE list's worth of items!
}
とにも保存して、私はすべてが終了し、そのデータを取得して、収集したすべてのデータを取得し、それを使って何かをするいくつかのマスタ機能を呼び出したとき知っておく必要があります。
これを処理する方法はありますか?これは前に何度も解決されている必要があります...
JQuery $ .getと$ .each – mplungjan
は、バックエンドですべてのものを取得するルートがない理由です。 'api/ListItems/all'またはそれに類するもの?任意の非同期ループの必要性を避けることができます。 – jackwanders