如何从内部拒绝承诺的function

这可能是一个愚蠢的问题,但中期承诺链,你如何拒绝从当时的职能之一的承诺? 例如:

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 }); 

不再有对原始parsing/拒绝function或PromiseResolver的引用。 我只是应该添加return Promise.reject(validationError);

我只是应该添加return Promise.reject(validationError);

是。 然而, 这只是在jQuery 中复杂 ,你也可以简单地使用Promise / A +兼容库

 throw validationError; 

所以你的代码会看起来像

 someActionThatReturnsAPromise() .then(modifyResource) .then(function(modifiedResource) { if (!isValid(modifiedResource)) throw getValidationError(modifiedResource); // else ! return modifiedResource; }) .catch(function() { // oh noes });