Javascript AngularJS$timeout调用函数vs匿名函数vs表达式
结果:13425 根据调用顺序,结果应为12345。 立即执行以下行:Javascript AngularJS$timeout调用函数vs匿名函数vs表达式,javascript,angularjs,timeout,Javascript,Angularjs,Timeout,结果:13425 根据调用顺序,结果应为12345。 立即执行以下行: 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($
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);
如果添加如下所示的时间参数,则忽略时间
$timeout($scope.text += '3');
$timeout($scope.$eval(four));
$timeout($scope.text+='3')代码>
在这一行中,$scope.text+=“3”
不是一个函数,而是一个表达式。因此它将在$scope.text='1'之后执行代码>
要延迟语句,需要用函数包装该语句,并将其传递给$timeout
或setTimeout
。你不能推迟陈述
替换$timeout($scope.text+='3')带有$timeout(function(){$scope.text+='3'})的code>
。
您将获得输出14235
和$scope.$eval()
同步计算函数或表达式,因此
4
将在235
之前添加。
改成
$timeout($scope.text += '3', 1000);
$timeout($scope.$eval(four), 1000);
将获得预期的输出12345
,这就是JavaScript的工作方式。这就是为什么$timeout
需要一个函数“内联命令”是什么?我要指的是表达式。我确定了标题。
$timeout(function(){$scope.$eval(four)})