Dies ist wahrscheinlich eine dumme Frage, aber in der Mitte der Versprechenskette, wie lehnt man ein Versprechen aus einer der damaligen Funktionen ab? Beispielsweise:
someActionThatReturnsAPromise()
.then(function(resource) {
return modifyResource(resource)
})
.then(function(modifiedResource) {
if (!isValid(modifiedResource)) {
var validationError = getValidationError(modifiedResource);
// fail promise with validationError
}
})
.catch(function() {
// oh noes
});
Es gibt keinen Verweis mehr auf die ursprüngliche Auflösungs-/Zurückweisungsfunktion oder den PromiseResolver. Soll ich nur return Promise.reject(validationError);
hinzufügen?
Soll ich nur
return Promise.reject(validationError);
hinzufügen?
Ja. Allerdings es ist so kompliziert nur in jQuery, mit einer Promise/A + - kompatiblen Bibliothek könnten Sie auch einfach
throw validationError;
Ihr Code würde dann so aussehen
someActionThatReturnsAPromise()
.then(modifyResource)
.then(function(modifiedResource) {
if (!isValid(modifiedResource))
throw getValidationError(modifiedResource);
// else !
return modifiedResource;
})
.catch(function() {
// oh noes
});