나는 $ .when와 $ .Deferred의 여섯 가지 변형을 보았고 시도했지만 제대로 작동하지 않습니다. 아래 코드는 다음을 수행해야합니다 :
1.) 사용자가 로그인 기능을 호출하는 로그인을 클릭합니다.
2.) 로그인은 서버에서 콜백을 실행해야하는 renderNavbar를 호출합니다.
3. renderNavbar가 데이터를 검색하고 renderNavbar가 #navbar의 html 속성을 설정 한 후 로그인하면 toggleLoginState를 호출해야합니다.
실제로 로그인 호출이 발생합니다. renderNavbar는 renderNavbar 내에서 콜백을 기다리지 않고 즉시 toggleLoginState를 호출합니다. 이 문제를 어떻게 해결합니까 ?? (BTW renderNavbar 및 toggleLoginState는 코드의 다른 위치에서 서로 독립적으로 호출되며 다른 하나는 직접 호출 할 수 없습니다.)
var app = {
this.login = function() {
$.when(app.renderNavbar()).done(app.toggleLoginState(1)); // wrong does not work
}
this.renderNavbar = function()
{
return $.when($.get('/Home/Navbar')).done(function (data) {
$('#navbar').html(data); // this line must complete before the call the to toggleLoginState is made
});
}
this.toggleLoginState = function (state)
{
if (state == 1) {// yada} // this line should execute after #navbar is set
}
}
당신은 구문 오류가 있습니다.')}'in'lo 진 '. – meagar
매달린 코드를 제거한 결과입니다. 귀하가 제공 한 답변이 정확합니다. – Sam