【发布时间】:2018-11-21 08:08:27
【问题描述】:
下面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');
});
https://codepen.io/bartclaeys/pen/EOooKy
预期行为:当您反复单击按钮时,警报应反复触发。
【问题讨论】:
-
所以它确实做了它应该做的事? promises cannot be resolved or rejected more than once.
-
@KevinB 我希望它多次触发,所以我想我需要以某种方式重置承诺?
-
你需要的不是承诺。不是承诺。比如一个事件。或者只是一个函数。
-
只需在 click 事件中定义 deferred 并将失败处理程序作为全局函数,或者在 click 中,这取决于你
-
呃,投反对票...为什么!?
标签: jquery promise jquery-deferred