kel*_*dar 15 angularjs q angular-promise
有人可以告诉我,如果使用错误回调与catch函数之间存在差异$q.promise吗?
例如两个代码片段在功能上是等价的吗?
function doSomething0() {
var deferred = $q.defer();
...
return deferred.promise;
}
doSomething0()
.then(doSomething1)
.then(doSomething2)
.then(doSomething3)
.catch(function (err) {
// do something with `err`
});
Run Code Online (Sandbox Code Playgroud)
与
function doSomething0() {
var deferred = $q.defer();
...
return deferred.promise;
}
function errorHandler(err) {
// do something with `err`
}
doSomething0()
.then(doSomething1, errorHandler)
.then(doSomething2, errorHandler)
.then(doSomething3, errorHandler);
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么要使用第二个呢?在我看来,它看起来更加丑陋并导致更多的代码重复?
两者都会达到同样的效果,除了第二个可以运行errorHandler三次(而不是一次).你是正确的,它带来了一些代码重复,但它也允许你处理发生的任何错误,并继续你的链:
function errorHandler(err) {
//log error, continue
return $q.resolve('default value or something');
}
doSomething0()
.then(doSomething1, errorHandler)
.then(doSomething2, errorHandler)
.then(doSomething3, errorHandler);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3610 次 |
| 最近记录: |