jQuery deferred.fail()只执行一次
下面jQuery的延迟jQuery deferred.fail()只执行一次,jquery,promise,jquery-deferred,Jquery,Promise,Jquery Deferred,下面jQuery的延迟fail()只执行一次,为什么 var dfd = $.Deferred(); $('button').on('click', function(){ if(typeof lorem === 'undefined') { return dfd.reject(); } }); dfd.fail(function(){ alert('Variable lorem is not defined'); }); 预期行为:当您重复单击
fail()
只执行一次,为什么
var dfd = $.Deferred();
$('button').on('click', function(){
if(typeof lorem === 'undefined') {
return dfd.reject();
}
});
dfd.fail(function(){
alert('Variable lorem is not defined');
});
预期行为:当您重复单击按钮时,警报应反复触发。回答我自己的问题,下面的工作原理:
$('button').on('click', function(){
var dfd = $.Deferred();
dfd.fail(function(){
alert('Error');
});
if(typeof lorem === 'undefined') {
return dfd.reject();
}
});
所以它确实做了它应该做的事@KevinB我希望它发射多次,所以我想我需要以某种方式重新设定承诺?你需要的不是承诺。不是承诺。比如一个事件。或者只是一个函数。只需在click事件中定义延迟,并将失败处理程序作为全局函数,或者在click中也可以,这取决于您呃,下一票。。。为什么?这正是我的建议--