¿Se puede convertir una función de JavaScript en un objeto diferido jQuery?

Puede ajustar una función síncrona en un diferido que se resolvió de inmediato:

// func. sincronización sincronizada
function existenteFunc () {…}
función wrapFunc () {
var dfd = new $ .Deferred ();
dfd.resolve (existenteFunc ());
return dfd.promise ();
}

// envolver funciones asíncronas
function existenteAsyncFunc (…, devolución de llamada) {…}
función wrapFunc () {
var dfd = new $ .Deferred ();
var cb = function () {
dfd.resolve.apply (esto, argumentos);
};
// agregue cb al argumento más a la derecha de la función existente usando la función partialRight de lodash
// puedes escribir esto tú mismo usando algunas funciones anónimas y enlazar,
// pero esto es más legible
var boundFunc = _.partialRight (existenteAsyncFunc, cb);
boundFunc.apply (esto, argumentos);
return dfd.promise ();
}