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/
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…