2015-02-11 56 views
1

我有以下的代码块:是角度的摘要周期异步?

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

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

我想知道的执行是否能够达到内$scope.$apply回调之前的一切if (data.cancel)线执行?如果$digest是异步的,则可能。

回答

1

没有它不是,伪代码:

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

所以答案是,它不会在完成之前到达if (data.cancel),尽管它有可能使与$scope.$applyAsyncc

$消化这种情况发生,也没有异步,但即使是纯粹回答你的问题,回调仍然会在之前执行,因为在回调执行后调用摘要。

,您可以查看这里$摘要代码: https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js