我有以下代码:
$scope.$apply(function () {
$scope.$emit("connectionadd.flowchart", data);
});
if (data.cancel) {
return false;
} else {
return true;
}
我想知道在if (data.cancel)
回调中的所有内容执行之前执行是否可以到达$scope.$apply
行?如果$digest
是异步,则可能。
答案 0 :(得分:1)
不,不是,伪代码:
function $apply(expr) {
try {
return $eval(expr);
} catch (e) {
$exceptionHandler(e);
} finally {
$root.$digest();
}
}
所以答案是在完成之前它不会达到if (data.cancel)
,尽管可以通过$scope.$applyAsyncc
$ digest也不是异步,但即使只是回答你的问题,然后回调仍然会被执行,因为在回调执行后会调用摘要。
您可以在此处查看$ digest代码: https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js