javascript - $q 是否包含 promise 链解析/拒绝时的隐式摘要/应用?

标签 javascript angularjs angular-promise angularjs-digest

$q是否包含 promise 链解析/拒绝时的隐式摘要/应用?

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

最佳答案

甚至更多 - 只要 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});
},

关于javascript - $q 是否包含 promise 链解析/拒绝时的隐式摘要/应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33496008/

相关文章:

javascript - 我的 AngularJS 代码没有被执行?

javascript - 使用 ajax/js 隐藏 TR

javascript - Appcelerator:将自定义(动态) View 添加到按钮单击创建卡上的 ScrollView

Javascript数组调试,范围问题

html - CSS滑入滑出动画溢出问题

ruby - 获取 TypeError - 无法克隆符号 : error when using active_model_serializer

javascript - 不能简单地使用 ES6 Promise 来更新 ng-repeat 中的数据吗?

angularjs - 如何使用 TypeScript 在 Controller 中处理 Angular Promise

javascript - 为什么推送方法在这种情况下不起作用 : []. 推送

angularjs - q.all 不适用于多个 promise