一般的な REST 標準に従って、リソースを個別のエンドポイントと呼び出しに分割しました。ここで問題となっている主な 2 つのオブジェクトはList
andItem
です (もちろん、リストにはアイテムのリストと、それに関連付けられた他のデータがあります)。
そのため、ユーザーが自分のリストを取得したい場合は、Get リクエストを行うことができますapi/Lists
次に、ユーザーはそれらのリストの 1 つでアイテムを取得し、前の呼び出しで取得されたapi/ListItems/4
4 が見つかった場所にGet を作成することができます。List.listId
のoptions.complete
属性で$.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!
}
また、ストレージを使用する場合でも、すべてのデータがいつ終了して取得されたかを把握し、収集されたすべてのデータを取得して何かを行うマスター関数を呼び出す必要があります。
これを処理するための練習はありますか?これは以前に何度も解決されたに違いありません...