我在我的网站上的导航栏,它被建在一些链:Ajax回调连锁
// in Init method
nav
.hideContainer()
.fetchData()
.buildHTML()
.eventify()
.showContainer();
这是确定的,对我来说工作正常。但在fetchData
方法我使用本地数据加载(内联json)。但现在,我需要获得远程数据(来自ajax调用)。我能不改变Init
方法吗?
我曾尝试与同步Ajax调用做到这一点:
// 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.S.我认为我应该去Deffered
对象的方向。我对吗?
不,你不能让init保持原样*和*让ajax异步运行。它的异步点在于它会立即返回,所以Init不能像那样工作。 – kubetz 2011-12-15 01:46:14