在$ q promise链中调用的内容会在摘要中应用吗?

时间:2014-11-10 04:16:39

标签: angularjs angular-promise angular-digest

如果我使用Angular $ q,我是否要担心使用$ evalAsync或$ apply?或者是由$ q自动处理?

1 个答案:

答案 0 :(得分:1)

通常,您不需要担心角度中的$ digest / $ apply / $ evalSync。根据{{​​3}}

有一个简短的比较:

Kris Kowal的Q和$ q

之间的差异

主要有两点不同:

  • $ q 与角度中的$ rootScope.Scope Scope模型观察机制集成,这意味着更快地将分辨率或拒绝传播到模型中并避免不必要的浏览器重绘,这将导致UI闪烁
  • Q具有比$ q更多的功能,但这需要以字节为单位。 $ q很小,但包含常见异步任务所需的所有重要功能。

$q document here,

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