Umgang mit mehrfach-Fänge Versprechen Kette

Ich bin noch Recht neu verspricht und bin mit bluebird zurzeit habe ich jedoch ein Szenario, wo ich nicht ganz sicher bin, wie Sie am besten damit umgehen.

Also ich habe z.B. ein Versprechen Kette innerhalb einer express app zum Beispiel so:

repository.Query(getAccountByIdQuery)
        .catch(function(error){
            res.status(404).send({ error: "No account found with this Id" });
        })
        .then(convertDocumentToModel)
        .then(verifyOldPassword)
        .catch(function(error) {
            res.status(406).send({ OldPassword: error });
        })
        .then(changePassword)
        .then(function(){
            res.status(200).send();
        })
        .catch(function(error){
            console.log(error);
            res.status(500).send({ error: "Unable to change password" });
        });

Also das Verhalten ich bin nach ist:

  • Geht um Konto-Id
  • Wenn es eine Ablehnung an diesem Punkt, Bombe und einen Fehler zurückgeben,
  • Wenn es keine Fehler konvertieren Sie das Dokument wieder ein Modell
  • Überprüfen Sie das Kennwort mit der Datenbank-Dokument
  • Wenn die Passwörter nicht passen dann Bombe aus und geben Sie einen anderen Fehler
  • Wenn kein Fehler Auftritt, gibt die Kennwörter ändern
  • Dann wieder Erfolg
  • Wenn alles andere schief gegangen ist, kehren 500

Also momentan fängt nicht scheinen zu stoppen die Verkettung, und das macht Sinn, also Frage ich mich, ob es eine Möglichkeit gibt mir irgendwie Kraft, die Ketten zu stoppen, zu einem bestimmten Zeitpunkt, basierend auf den Fehlern, oder wenn es einen besseren Weg gibt, um die Struktur dieser um irgendeine form der Verzweigung Verhalten, wie es der Fall ist, dass if X do Y else Z.

Jede Hilfe wäre toll.

Können Sie entweder rethrow oder baldige Rückkehr?

InformationsquelleAutor Grofit | 2014-09-27

Schreibe einen Kommentar