簡體   English   中英

的摘要循環異步嗎?

[英]is angular's digest cycle asynchronous?

我有以下代碼:

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

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

我想知道在$scope.$apply回調內部的所有內容執行之前,執行是否可以到達if (data.cancel)行? 如果$digest是異步的,則有可能。

不,不是,偽代碼:

function $apply(expr) {
  try {
    return $eval(expr);
  } catch (e) {
    $exceptionHandler(e);
  } finally {
    $root.$digest();
  }
}

因此答案是, if (data.cancel)在完成之前也不會到達,盡管可以使用$scope.$applyAsyncc做到這一點$scope.$applyAsyncc

$ digest也不是異步的,但是即使是純粹通過回答您的問題,回調也仍然會在執行之前執行,因為摘要是在回調執行之后調用的。

您可以在此處查看$ digest代碼: https//github.com/angular/angular.js/blob/master/src/ng/rootScope.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM