这可能是一个愚蠢的问题,但是在承诺链中,如何拒绝来自 then 函数之一的承诺?例如:
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
});
不再引用原始的解析/拒绝函数或 PromiseResolver。我是否应该添加return Promise.reject(validationError);
?
我是否应该添加return Promise.reject(validationError);
?
是的。然而,就是这么复杂 https://stackoverflow.com/questions/10843297/throwing-an-error-in-jquerys-deferred-object仅在 jQuery 中,带有承诺/A+ http://promisesaplus.com/-兼容的库你也可以简单地
throw validationError;
所以你的代码看起来像
someActionThatReturnsAPromise()
.then(modifyResource)
.then(function(modifiedResource) {
if (!isValid(modifiedResource))
throw getValidationError(modifiedResource);
// else !
return modifiedResource;
})
.catch(function() {
// oh noes
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)