一定量のページを繰り返し処理し、ajax 呼び出しを使用してコンテンツを入力したいと思います。問題は、反復関数内に ajax 呼び出しを配置すると、javascript の同期の性質に問題があることです。ajax 呼び出しが完了する前に、反復が既に続行されています。そこで、setTimeout で ajax 呼び出しを行う回避策を作成しました。これは正常に機能します。しかし、私はこの方法があまり好きではなく、別の (より良い) 解決策があるかどうか疑問に思っていました。(jQuery が async: true オプションを提供していることは知っていますが、それは機能しませんでした)
function populatePages(i) {
pageId = PageIds[i];
containerId = pageIdContainer[i];
$j.ajax({
type: 'GET',
dataType: 'html',
url: url,
data: { pageid: pageId, containerid: containerId },
success: function(data) {
//populate the DIV
}
});
}
i = 0;
x = 50;
$j.each(pagesIds, function(){
setTimeout("populatePages("+i+")", x);
x = x + 50;
i++;
});