URL の配列と、外部から取得するデータの配列があります。URL とデータは 1 対 1 で完全に対応しています。私はこれをしようとします:
for (var i = 0; i < children.length; i++) {
urls.push(children[i].data.url);
}
for (var i = 0; i < children.length; i++) {
$.ajax({
url: DATA_SOURCE,
dataType: "jsonp",
success: function (data2) {
console.log(urls[0]);
console.log(urls[i]);
}
});
}
最初のログは、常にurls
配列の最初の要素を出力します。番号を他の有効なインデックスに変更でき、機能します。ただし、2 番目のログは常に出力されundefined
ます。最初は 2 番目のループ内から URL を取得しましたが、非同期エラーか何かであることが判明した場合に備えて、それを取り出しました。ではなく にurls
初期化されます。成功関数から (そして for ループのメイン スコープに) 2 番目のログを取得すると、期待どおりに実行されます。ajax リクエストが何らかの形でそれを台無しにしていることを喜んで説明したいと思いますが、最初のログが期待どおりに機能するのはなぜですか?Array
Object
何か案は?