How can I determine if a jQuery object is deferred?

WawaBrother picture WawaBrother · Jun 10, 2012 · Viewed 10.1k times · Source

If I have a function that sometimes returns a deferred object but sometimes a non-deferred object. How can I tell which one it is?

Answer

Julian Maicher picture Julian Maicher · Aug 28, 2012

Depending on your use case, you could also use jQuery.when [1]:

If a single argument is passed to jQuery.when and it is not a Deferred, it will be treated as a resolved Deferred and any doneCallbacks attached will be executed immediately.

With jQuery.when you can treat your mysterious object always as deferred:

// x could be a deferred object or an immediate result
var x = getMysteriousObject();
// success will be called when x is a deferred object and has been resolved
// or when x is an immediate result
jQuery.when( x ).then( success, error );

[1] http://api.jquery.com/jQuery.when/