$.ajax()を使ってarrayに格納された複数のurlを順番に取得していく方法です.
var urls = ["909253","909254","909255","909256"]; urls.reduce(function(previous,current) { return previous.then(function(response) { if (response) { console.log(response); }; console.log(current); return $.ajax({ url: "https://itunes.apple.com/lookup?id="+current, timeout: 2000 }); }); }, $.Deferred().resolve()).done(function() { console.log("complete."); }).fail(function() { console.log("error."); });
Array.prototype.reduce() を使います.最初に $.Deferred().resolve() を作成し,これに対して.then()を.reduce()でチェインしていくわけです.
responseは $.ajax() で取得したデータです.初回は $.Deferred().resolve() の返り値であるundefinedが帰ってくるので,ifを使用します.
最後の .done() は処理が正常完了した時の処理です..fail() はエラー時の処理です.
上記を実行すると,非同期で順番に$.ajax()が呼ばれ,iTunes Search APIから指定されたidの曲情報を取得しconsoleに表示します.
匿名関数のみでスッキリと記述できたような気がします.