¿Echas de menos los Deferred de jQuery cuando trabajas con promesas en JavaScript? Pues bien, acabo de publicar una utilidad con un código muy pequeño (32 líneas), con la que puedes trabajar con las promesas de JavaScript, tal y como lo hacías con los Deferred. La mini-librería se llama Repromise.
Me explico. Su funcionamiento es muy básico. Si hasta ahora al construir las promesas de JavaScript, tenías que definir un callback, con el que recibir los métodos a los que llamar al resolver y rechazar la promesa. Pongamos un ejemplo de como sería un código más o menos realista con promesas:
function findUserByName(userName) {
const promise = new Promise1
.catch(onStoreFindByNameRejected.bind(this, repromise));
return repromise.getPromise();
}
function onStoreFindByNameResolved(repromise, userResult) {
const userParsed = this.parseUserResult(userResult);
repromise.resolve(userParsed);
}
function onStoreFindByNameRejected(repromise, errorReason) {
repromise.reject(errorReason);
}
Con el modo antiguo, no quedaba otra que pasar los dos parámetros, o crear un nuevo objeto uniendo ambos para pasarlos a otras funciones.
Para utilizar la librería tan sólo hay que importarla en vuestro proyecto con npm:
npm i jrepromise
Espero vuestras ideas y sugerencias para ir mejorando esta mini-librería, y que os pueda ayudar un poco a lidiar con las promesas.
Comparte este artículo con quien quieras
¿Echas de menos los Deferred de jQuery cuando trabajas con promesas en JavaScript? Pues bien, acabo de publicar una utilidad con un código muy pequeño (32 líneas), con la que puedes trabajar con las promesas de JavaScript, tal y como lo hacías con los Deferred. La mini-librería se llama Repromise.
Me explico. Su funcionamiento es muy básico. Si hasta ahora al construir las promesas de JavaScript, tenías que definir un callback, con el que recibir los métodos a los que llamar al resolver y rechazar la promesa. Pongamos un ejemplo de como sería un código más o menos realista con promesas:
Con el modo antiguo, no quedaba otra que pasar los dos parámetros, o crear un nuevo objeto uniendo ambos para pasarlos a otras funciones.
Para utilizar la librería tan sólo hay que importarla en vuestro proyecto con npm:
Espero vuestras ideas y sugerencias para ir mejorando esta mini-librería, y que os pueda ayudar un poco a lidiar con las promesas.
resolve, reject) => { userStore.findByName(userName).then((userResult) => { const userParsed = parseUserResult(userResult); resolve(userParsed); }.catch(function(errorReason) { reject(errorReason); }); } return promise; }
Como podéis ver, la indentación se va incrementando haciendo poco legible el código. Con Repromise, creas una instancia de la clase, y cuando quieras resolver la promesa o rechazarla llamas al método correspondiente. Basándonos en el ejemplo anterior:
Como podéis ver, simplifica un poco el código, evitando que tengamos un método en medio, y además, podemos pasar nuestro objeto Repromise a otros métodos para que sean éstos los que hagan las llamadas, así podemos simplificar aún más el método original:
jose