javascript中的setTimeout和angularjs中的$timeout服务之间的差异
我不熟悉angular框架。下面是我的场景,我想在一段时间后更改$scope.variable,所以我使用了javascriptjavascript中的setTimeout和angularjs中的$timeout服务之间的差异,javascript,angularjs,settimeout,angular-services,Javascript,Angularjs,Settimeout,Angular Services,我不熟悉angular框架。下面是我的场景,我想在一段时间后更改$scope.variable,所以我使用了javascriptsetTimeout方法 $scope.variable = 'Previous'; setTimeout(function(){ $scope.variable='NEXT'; },3000); 这个代码对我不起作用。我使用了$apply()来实现这段代码 后来我才知道angular本身有一个$timeout服务,它做同样的工作 $scope.variable
setTimeout
方法
$scope.variable = 'Previous';
setTimeout(function(){
$scope.variable='NEXT';
},3000);
这个代码对我不起作用。我使用了$apply()
来实现这段代码
后来我才知道angular本身有一个$timeout服务,它做同样的工作
$scope.variable = 'Previous';
$timeout(function () {
$scope.variable = 'NEXT';
}, 2000);
如何将$timeout
服务的性能与javascriptsetTimeout
进行比较
为什么我们应该使用$timeout
而不是setTimeout
请给我一些例子和理由来使用它,这表明性能
谢谢:)从外部(包括ajax)处理任何AngularJS范围变量时,都需要$apply() $timeout()负责当前范围,并在所有更改检测完成后在同一摘要周期中运行 我最近发现的$timeout()的一个优点是,如果不传递time参数,它将等待DOM完成 所以 在指令中运行此代码,一旦指令加载了分部代码,就会触发超时回调函数
希望这有帮助。在某些情况下,需要执行某种超时操作,我们经常使用JavaScript的
setTimeout()函数来实现这一点
但是,如果我们在AngularJS应用程序中使用setTimeout()
,我们还需要使用$scope.$apply()
,以确保对作用域的任何更改都将反映在别处(即视图中的数据绑定)
AngularJS
为此提供了一个方便的包装器:$timeout()
-它执行$apply()
,我们不必对其进行$apply
更改
关于性能
如果您使用$timeout
来创建本质上是一个间隔,那么不要使用它。如果您的应用程序很大,那么$apply
也会触发一个$digest
循环,您可能并不希望它发生,这肯定会降低性能。此外,您可以将false作为第二个参数传递给$timeout,它不会调用$apply。当您想要手动控制$digest时非常有用答案在细节上含糊不清,可能包含不正确的信息。关于指令用法的语句很牵强,并没有真正解释它与setTimeout+$scope.$apply的区别$timeout(()=>{…},…)
与setTimeout(()=>$scope.$apply(…),…)
基本相同,只是前者可以与$timeout.flush()
同步测试(另外,它还可以选择跳过摘要)。性能完全取决于当前应用程序中摘要周期的性能$超时将导致摘要。对于拥有大量观察者的应用程序,$rootScope.$digest()
使应用程序冻结,它将再次冻结。就这么简单。
$timeout(function(){
console.log("show after directive partial loaded")
}); //note, no time parameter