$ q是否包含隐含的摘要/适用于对承诺链的解析/拒绝?

时间:2015-11-03 09:53:06

标签: javascript angularjs angular-promise angular-digest

$q是否包含隐含的摘要/适用于解析/拒绝承诺链?

我已将$q的一段代码迁移到使用q,现在似乎缺少摘要导致不同的行为。为什么会这样?

1 个答案:

答案 0 :(得分:3)

更多 - 只要QProvider被定义为:

,它就包含显式内容
function $QProvider() {
  this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
    return qFactory(function(callback) {
      $rootScope.$evalAsync(callback); // ! $evalAsync()
    }, $exceptionHandler);
  }];
}

从这个函数声明中,方法.$evalAsync()的简短方法对于Versin 1.2.28来说就像

$evalAsync: function(expr) {
    // if we are outside of an $digest loop and this is the first time we are scheduling async
    // task also schedule async auto-flush
    if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) {
      $browser.defer(function() {
        if ($rootScope.$$asyncQueue.length) {
          $rootScope.$digest(); // ! $digest()
        }
      });
    }

    this.$$asyncQueue.push({scope: this, expression: expr});
},