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);
答案 0 :(得分:3)
$timeout($scope.text += '3');
$scope.text += '3'
不是函数,而是表达式。所以它会在$scope.text = '1';
之后执行。
要延迟语句,您需要使用函数包装该语句并将其传递给$timeout
或setTimeout
。你不能推迟陈述。
将$timeout($scope.text += '3');
替换为$timeout(function(){$scope.text += '3'})
。
您将获得输出14235
。
$scope.$eval()
同步评估函数或表达式
4
之前会添加235
。
将其改为
$timeout(function(){$scope.$eval(four)})
将获得预期的输出12345