Forma correcta de omitir una función de entonces en Q Promises
En mi código, basado en una condición específica, me gustaría saltar aldone
función, independientemente de todas lasthen
funciones
La versión original de esta pregunta está en las ediciones. El siguiente es el problema real con el que estoy lidiando. Lo siento por los inconvenientes ocasionados
Problema real:
Estoy leyendo un archivo y procesándolo. Si el contenido del archivo coincide con ciertas condiciones, tengo que hacer una serie de operaciones en el sistema de archivos (digamos leer y escribir pocos archivos) y luego ejecutardone
función. Si las condiciones fallan,Tengo que omitir todas las series de operaciones y tengo que ejecutar eldone
funcionar directamente.
Devuelvo un objeto (digamosresult
) en todo elthen
funciones y en el próximothen
Actualizoresult
y devuélvelo. Entonces, cuando todo elthen
están hechos,done
tendrá el acumuladoresult
. Finalmente, eldone
procesaráresult
e imprimirlo.
Entonces, si las condiciones no se cumplen inicialmente,done
simplemente imprimiráresult
(que estaría vacío)
Q()
.then(readFile)
.then(function (contents) {
var processResult = process the contents;
if (processResult) {
return {};
} else {
// How can I skip to `done` from here
}
})
.then(function (results) {
// do some more processing and update results
return results;
})
... // Few more then functions similar to the one above
...
.fail(function (exception) {
console.error(exception.stack);
})
.done(function (results) {
// do some more processing and update results
console.log(results);
});