角度的摘要周期是异步的吗?

时间:2015-02-11 14:42:15

标签: javascript angularjs

我有以下代码:

$scope.$apply(function () {
    $scope.$emit("connectionadd.flowchart", data);
});

if (data.cancel) {
    return false;
} else {
    return true;
}

我想知道在if (data.cancel)回调中的所有内容执行之前执行是否可以到达$scope.$apply行?如果$digest是异步,则可能。

1 个答案:

答案 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