에 내 사이트에 탐색 모음에 봉착하고, 일부 체인에 건설되고있어 :아약스 콜백 체인
// in Init method
nav
.hideContainer()
.fetchData()
.buildHTML()
.eventify()
.showContainer();
그것은 확인을, 그리고 나를 위해 잘 작동합니다. 그러나 fetchData
메서드에서 로컬 데이터를 사용하여로드합니다 (인라인 json). 하지만 이제는 원격 데이터를 가져와야합니다 (아약스 호출에서). Init
방법을 변경하지 않고도 변경할 수 있습니까?
// in fetchData() method
var data;
$.ajax ({
async: false,
url : '/some/url/',
success : function(res) {
data = res;
}
});
return data;
을하지만 그것이 느린 것을 알고있다 -가로드되는 동안 브라우저를 차단합니다.
나는이 같은 방법으로 같은 내 Init
방법을 수정할 수 있음을 알고 :
nav
.hideContainer()
.fetchData(function(){
nav.buildHTML().eventify().showContainer()
});
하지만, 내가 Init
방법을 수정하지 싶습니다, 나는이 작업을 수행 할 수 있습니까?
P. 나는 Deffered
객체의 방향으로 가야한다고 생각한다. 내가 맞습니까?
아니요, init을 그대로 둘 수는 없습니다. * 및 * ajax는 비동기 적으로 실행됩니다. 비동기식이라는 점은 Init가 그처럼 작동하지 않도록 즉시 반환된다는 것입니다. – kubetz