首页 > 解决方案 > jQuery deferred.fail() 只执行一次

问题描述

下面 jQuery 的 deferredfail()只执行一次,为什么?

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

预期行为:当您重复单击按钮时,警报应重复触发。

标签: jquerypromisejquery-deferred

解决方案


回答我自己的问题,下面的作品:

$('button').on('click', function(){

    var dfd = $.Deferred();

    dfd.fail(function(){
        alert('Error');
    });

    if(typeof lorem === 'undefined') {
        return dfd.reject();
    }
});

推荐阅读