[英]AngularJS $timeout call function vs anonymous function vs expression
var four = function() {
$scope.text += '4';
}
var five = function() {
$scope.text += '5';
}
$scope.text = '1';
$timeout(function () {
$scope.text += '2'
});
$timeout($scope.text += '3');
$timeout($scope.$eval(four));
$timeout(five);
結果:13425
根據調用順序,結果應為12345.以下行立即執行:
$timeout($scope.text += '3');
$timeout($scope.$eval(four));
如果您添加如下所示的時間參數,則會忽略時間。
$timeout($scope.text += '3', 1000);
$timeout($scope.$eval(four), 1000);
$timeout($scope.text += '3');
在這一行$scope.text += '3'
不是一個函數,而是一個表達式。 所以它會在$scope.text = '1';
之后執行$scope.text = '1';
。
要延遲語句,您需要使用函數包裝該語句並將其傳遞給$timeout
或setTimeout
。 你不能推遲發表聲明。
替換$timeout($scope.text += '3');
$timeout(function(){$scope.text += '3'})
。 你會得到輸出14235
。
$scope.$eval()
同步計算函數或表達式,因此在235
之前會添加4
。 改變它
$timeout(function(){$scope.$eval(four)})
將得到預期的輸出12345
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.