如果我使用 Angular 的 $q,我是否需要担心使用 $evalAsyn 或 $apply?还是由 $q 自动处理?
问问题
157 次
1 回答
1
通常,您无需担心 Angular 中的 $digest/$apply/$evalSync 内容。根据此处的 $q 文档,
有一个简短的比较:
Kris Kowal 的 Q 和 $q 之间的差异
有两个主要区别:
- $q与 angular 中的 $rootScope.Scope Scope 模型观察机制集成,这意味着可以更快地将分辨率或拒绝传播到您的模型中,并避免不必要的浏览器重绘,这会导致 UI 闪烁。
- Q 比 $q 有更多的功能,但这是以字节为代价的。$q 很小,但包含常见异步任务所需的所有重要功能。
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);
}];
}
于 2014-11-10T04:41:45.197 回答