chi*_*fet 77 javascript promise
这可能是一个愚蠢的问题,但是中间的承诺链,你如何拒绝来自其中一个函数的承诺呢?例如:
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
});
Run Code Online (Sandbox Code Playgroud)
不再引用原始的解析/拒绝功能或PromiseResolver.我应该添加return Promise.reject(validationError);吗?
Ber*_*rgi 90
我应该添加
return Promise.reject(validationError);吗?
是.然而,它只是在jQuery 中复杂,你可以简单地使用Promise/A +兼容库
throw validationError;
Run Code Online (Sandbox Code Playgroud)
所以你的代码看起来就像
someActionThatReturnsAPromise()
.then(modifyResource)
.then(function(modifiedResource) {
if (!isValid(modifiedResource))
throw getValidationError(modifiedResource);
// else !
return modifiedResource;
})
.catch(function() {
// oh noes
});
Run Code Online (Sandbox Code Playgroud)