我之前稍微使用过jQuery中的promises - 但是我在将这个应用到这个场景时遇到了麻烦.我更喜欢使用$ .when()和$ .done()方法来实现这一点.
根据我的理解,我需要构建一个$ .Deferred对象来记录请求,当这些请求完成时 - 触发回调.在我的代码下面,回调是在 ajax请求之前触发而不是之后 - 也许我只是需要一些睡眠
我知道我的代码不完整我一直在努力通过添加for循环来应用它.
http://jsfiddle.net/whiteb0x/MBZEu/
var list = ['obj1', 'obj2', 'obj3', 'obj4', 'obj5'];
var callback = function() {
alert("done");
};
var requests = [];
var ajaxFunction = function(obj, successCallback, errorCallback) {
for(i = 0; i < list.length; i++) {
$.ajax({
url: 'url',
success: function() {
requests.push(this);
}
});
}
};
$.when($.ajax(), ajaxFunction).then(function(results){callback()});
Run Code Online (Sandbox Code Playgroud) 我想了解更多有关Javascript中的方法链接的信息,并想知道在没有jQuery的情况下为链中的下一个函数创建延迟的正确方法:
var foo = function() {
this.delay = function(per) {
setTimeout(start, per);
return this;
};
this.start = function() {
alert('start!');
};
};
var bar = new foo().delay(1000).start();
Run Code Online (Sandbox Code Playgroud)