セクションをロードする関数があります。
function loadSection(sectionId, onLoaded) {
$.when(
loadTemplate(sectionId),
// etc
)
.then(function () {
// removed for brevity
}
}
関数でloadTemplate
現在のテンプレートをフェードアウトし、フェードアウト後に新しいテンプレートをロードします。
function loadTemplate(sectionId) {
// Fade out current template.
return $content.fadeOut(function () {
// After fade out, load new template via ajax.
$.ajax({
url: settings.apiUrl + 'GetSectionTemplate',
data: { sectionId: sectionId },
type: 'post',
success: function (template) {
// Add new content and fade in new template.
$content
.html(template)
.fadeIn();
}
});
});
}
問題は$.when
、fadeOut 関数が終了するのを待ってから先に進むことです。フェードアウトと ajax 呼び出しの両方が完了するのを待つ必要がありますが、フェードアウトが終了した後にのみ ajax 呼び出しを実行する必要があります。