有人告诉我使用错误回调与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` });
与
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);
如果是这样,为什么要使用第二个?它看起来比较丑陋,导致我的意见中更多的代码重复?
两者都会实现同样的事情,除了第二个可能会运行errorHandler三次(而不是一次).你是正确的,它带来了一些代码重复,但它也允许您处理发生的任何错误并继续您的链条:
原文链接:https://www.f2er.com/angularjs/140720.htmlfunction errorHandler(err) { //log error,continue return $q.resolve('default value or something'); } doSomething0() .then(doSomething1,errorHandler) .then(doSomething2,errorHandler) .then(doSomething3,errorHandler);