2

$qPromise チェーンの解決/拒否時に、暗黙のダイジェスト/適用が含まれていますか?

コードの一部$qを使用するために移行しましたqが、ダイジェストが欠落しているように見え、動作が異なります。これはなぜでしょうか?

4

1 に答える 1

3

QProviderさらに、次のように定義されている限り、明示的に含まれます。

function $QProvider() {
  this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) {
    return qFactory(function(callback) {
      $rootScope.$evalAsync(callback); // ! $evalAsync()
    }, $exceptionHandler);
  }];
}

.$evalAsync()この関数宣言から、バージョン 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});
},
于 2015-11-03T10:31:45.230 に答える