Tag: 延期

jQuery推迟:取消进度

有没有办法取消正在进行的延迟回调队列? 我有任意数量的ajax调用。 当成功数据返回特定标记时,我想停止进一步的ajax请求: this.oDeferred=$.Deferred(); this.oChain=this.oDeferred; for(var i=0; i<this.aKey.length; i++) { (function(iKey,self) { self.oChain=self.oChain.then(function(){ return $.ajax({ url:self.aUrl[iKey], type:'post', data:{'ajax':true}, dataType:'json', success:function(data) { if(data.bCancel==true) { //stop deferred object here! } } }); }) }(this.aKey[i],this)) } this.oDeferred.done(function() { console.log('done') }); this.oDeferred.resolve() 顺便说一句 – 在完成所有ajax请求后,函数done()会自动触发。 所有ajax请求完成后如何执行函数? 先感谢您!

Deferred对象和它自己的promise对象之间有什么区别?

让我们创建一个简单的Deferred对象: defer = $.Deferred( function ( defer ) { setTimeout( defer.resolve, 3000 ); }); 上面的Deferred对象将处于“pending”状态3秒,然后切换到“已解决”状态(此时将调用绑定到它的所有回调)。 让我们也检索Deferred对象的承诺: promise = defer.promise(); 现在,要添加在解析Deferred对象后将要调用的回调,我们可以使用.done()或.then() 。 但是,我们可以在Deferred对象本身或其自己的promise对象上调用此方法。 defer.then( handler ); 要么 promise.then( handler ); 在这两种情况下,都将调用handler函数(在这种情况下3秒后)。 如果我们使用$.when ,我们可以再次传递Deferred对象本身或其promise对象: $.when( defer ).then( handler ); 要么 $.when( promise ).then( handler ); 同样,上面两行代码之间没有区别。 现场演示: http : //jsfiddle.net/G6Ad6/ 所以,我的问题是因为我们可以在Deferred对象本身上调用.promise()等,因为我们可以将该Deferred对象传递给$.when() ,那么.promise()和检索promise对象? promise对象的目的是什么? 为什么function上存在这种冗余?

链ajax并按顺序执行。 Jquery延期

我有3个需要ajax才能完成的进程。 但它是异步的,它无法做我想做的事情.. 让我们说: function a(param1, param2) { $.post(…, function(result){ if(result){ b(); } else { console.log(“failed a”); } }) } function b() { $.post(…, function(result){ if(result){ c(); } else { console.log(“failed b”); } }) } function c() { $.post(…, function(result){ if(result){ console.log(“successful”); } else { console.log(“failed b”); } }) } 我希望它像这样执行 a b c 正如你所看到的那样,该代码将完美地运行..但是如果使用循环。 var […]