Ise*_*mar 27 javascript settimeout angularjs angular-services
我是角度框架的新手.这是我的场景,我想在一段时间后更改我的$ scope.variable,所以我使用了javascript setTimeout方法.
$scope.variable = 'Previous';
setTimeout(function(){
$scope.variable='NEXT';
},3000);
Run Code Online (Sandbox Code Playgroud)
这段代码对我不起作用.我曾经$apply()使这个代码工作.
后来我才知道angular本身有一个$ timeout服务,可以做同样的工作.
$scope.variable = 'Previous';
$timeout(function () {
$scope.variable = 'NEXT';
}, 2000);
Run Code Online (Sandbox Code Playgroud)
我怎样才能比较$timeoutjavascript 的服务性能setTimeout?
我们为什么要用$timeout而不是setTimeout??
请给我一些使用它的例子和理由,它显示了性能.
谢谢 :)
Nik*_*hri 28
在某些情况下,需要执行某种超时操作,我们经常使用JavaScript的setTimeout()功能来实现这一点.
但是,如果我们setTimeout()在AngularJS应用程序中使用,我们还需要使用它$scope.$apply()来确保对其他任何更改scope都会反映在其他地方(即数据绑定在a中view).
AngularJS为此提供了一个方便的包装器:$timeout()- 它$apply()为我们不需要进行$apply更改.
关于表现.
如果您正在使用$timeout创建本质上是间隔的内容,则不要使用它.如果您的应用程序很大,那么$apply也会触发一个$digest您可能不希望它发生的循环,它肯定会降低性能.
Tar*_*run 20
从外部(包括ajax)处理时,任何AngularJS范围变量都需要$ apply().
$ timeout()负责当前范围,并在完成所有更改检测后在相同的摘要周期中运行.
我最近发现的$ timeout()的一个美妙之处是,如果你没有传递time参数,它将等待DOM完成.
所以,
$timeout(function(){
console.log("show after directive partial loaded")
}); //note, no time parameter
Run Code Online (Sandbox Code Playgroud)
在指令中运行此代码,并且一旦指令加载了partial,就会触发超时回调函数
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
38543 次 |
| 最近记录: |