Add handlers to be called when the Deferred object is resolved, rejected, or still in progress.
Prior to jQuery 1.8, the arguments could be a function or an array of functions.
For all signatures, the arguments can be null if no callback of that type is desired. Alternatively, use .done(), .fail() or .progress() to set only one type of callback without filtering status or values.
As of jQuery 1.8, the deferred.then() method returns a new promise that