DeferredsExample

by Jose Montero

HTML

<div id="msg" ></div>

CSS

.strong{
  font-weight: bolder;
}
.fail{
  font-weight: bolder;
  color: red;
}

JavaScript

var TestDfdReject = (function(){
        return{
        names : [],
        init : function(name)
        {
          this.createRecord(name)
          .done(function(msg){
            $("#msg").append($("<p>").addClass("strong").text(msg));
          })
          .fail(function(msg){
            $("#msg").append($("<p>").addClass("fail").text(msg));
          });
        },
        createRecord : function(name)
        {
          var deferred = $.Deferred();
          this.checkForDups(name)
          .done(function(duplicate){
                this.names.push(name);
                deferred.resolve(`Name: ${name} added in array!`);              
          }.bind(this))
          .fail(function(){
          		 deferred.reject(`Name: ${name} exists in array!`);
          });
          
          return deferred.promise();
        },
        checkForDups : function(name)
        {
          var deferred = $.Deferred();
          if ($.inArray(name, this.names) >= 0) 
            deferred.reject(); 
          else
            deferred.resolve(false);
            
          return deferred.promise();
        }
  };
})();
TestDfdReject.init("Jose");
TestDfdReject.init("Carlos");
TestDfdReject.init("Jose");
TestDfdReject.init("Pedro");
TestDfdReject.init("Carlos");
console.log(TestDfdReject.names);