加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Promises – 错误回调与catch

发布时间:2020-12-17 09:17:32 所属栏目:安全 来源:网络整理
导读:有人告诉我使用错误回调与catch函数之间是否存在差异,当使用$q.promise时? 例如.是代码的两个代码功能等同吗? function doSomething0() { var deferred = $q.defer(); ... return deferred.promise; } doSomething0() .then(doSomething1) .then(doSomethi
有人告诉我使用错误回调与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三次(而不是一次).你是正确的,它带来了一些代码重复,但它也允许您处理发生的任何错误并继续您的链条:
function errorHandler(err) {
  //log error,continue
  return $q.resolve('default value or something');
}

doSomething0()
  .then(doSomething1,errorHandler)
  .then(doSomething2,errorHandler)
  .then(doSomething3,errorHandler);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读