Stoppen Sie die Ausführung eines Sequelize-Versprechens in Express.js

8

Ich bin neu in der Welt der Versprechen und ich bin mir nicht sicher, ob ich sie in einigen Fällen vollständig verstehe.

Sequelize hat kürzlich Support-Versprechen hinzugefügt, die meinen Code wirklich lesbarer machen. Ein typisches Szenario besteht darin, Fehler in unendlichen Rückrufen mehrmals zu vermeiden. Der unten stehende Code gibt immer 204 zurück, während ich gerne 404 zurückgeben möchte, wenn das Foto nicht gefunden werden kann.

Gibt es eine Möglichkeit, Sequelize anzuweisen, die Ausführung der Versprechenskette nach dem Senden von 404 "anzuhalten"? Beachten Sie, dass res.send asynchron ist, sodass die Ausführung nicht gestoppt wird.

%Vor%

Natürlich ist dieses Beispiel trivial und könnte leicht mit Rückrufen geschrieben werden. Aber in den meisten Fällen kann der Code viel länger werden.

    
Pedro 06.06.2014, 22:39
quelle

1 Antwort

6

Ihre Versprechensketten müssen nicht unbedingt linear sein. Sie können "abzweigen" und eine separate Versprechungskette für den Erfolgsfall anlegen, indem Sie beliebig viele .then() verketten und eine separate (kürzere) Versprechungskette für den Fehlerfall haben.

Vom Konzept her sieht das so aus:

%Vor%

Und im eigentlichen Code sieht das so aus:

%Vor%     
Sergey K 07.06.2014, 02:02
quelle