我们有一个超级奇怪的登录错误,似乎是由Angular的UpgradeModule中的this line引起的,所以我对该行有疑问。
为什么:
var subscription = _this.ngZone.onMicrotaskEmpty.subscribe(function () { return $rootScope.$digest(); });
不是这样的:
var subscription = _this.ngZone.onMicrotaskEmpty.subscribe(function () {
if($rootScope.$$phase === null){
return $rootScope.$digest();
}
});
因为在第214行,甚至有一条评论说
“在下一个虚拟机转弯中运行回调 - $ interval调用$ rootScope。$ apply,并且在NgZone中运行回调将导致'$ digest已在进行中'错误,如果它在同一个vm转弯中”
该代码假定,因为它一直等到下一个滴答,所以还没有发生$ digest阶段。
(而不是假设超时解决问题)......这似乎是一种竞争条件。
使用angular AND angularjs标记的原因是因为这是angular的升级模块。升级模块使用角度内的angularjs。