javascript中的setTimeout和angularjs中的$timeout服务的区别
difference between setTimeout in javascript and $timeout service in angularjs
我是angular框架的新手。下面是我的场景,我想更改$scope。变量在一段时间后,所以我使用javascript setTimeout
方法。
$scope.variable = 'Previous';
setTimeout(function(){
$scope.variable='NEXT';
},3000);
这段代码不适合我。我使用$apply()
使这段代码工作。
后来我才知道angular本身也有一个$timeout服务来做同样的工作。
$scope.variable = 'Previous';
$timeout(function () {
$scope.variable = 'NEXT';
}, 2000);
如何比较$timeout
服务与javascript setTimeout
的性能??
为什么我们应该使用$timeout
而不是setTimeout
?
请给我一些使用它的例子和理由,这说明了性能。
谢谢
在某些情况下需要执行某种超时操作,我们通常使用JavaScript的setTimeout()
函数来实现这一点。
然而,如果我们在AngularJS应用程序中使用setTimeout()
,我们还需要使用$scope.$apply()
来确保对scope
的任何更改将在其他地方反映(即在view
中绑定数据)。
AngularJS
为这提供了一个方便的包装:$timeout()
-它做$apply()
,我们不需要$apply
的变化。
关于性能。
如果您使用$timeout
来创建本质上是间隔的东西,那么不要使用它。如果您的应用程序很大,那么$apply
也会触发$digest
循环,您可能不希望它发生,它肯定会降低性能。
任何从外部处理的AngularJS作用域变量(包括ajax)都需要一个$apply()。
$timeout()负责当前范围,并在所有更改检测完成后在相同的摘要周期中运行。
我最近发现$timeout()的一个优点是,如果不传递time参数,它将等待DOM完成。
$timeout(function(){
console.log("show after directive partial loaded")
}); //note, no time parameter
在指令中运行这段代码,超时回调函数将在该部分被指令
加载后触发。- 无法连接angularjs中的服务功能
- 使用routeProvider中的服务属性
- 我可以设置这个吗'某事'在该服务中动态创建的嵌套对象中的服务?(可能是范围问题)
- 如何使用angularjs中的服务或工厂
- 在angularjs中的服务中传递多个参数
- 将控制器作为打字稿/角度中的服务注入
- 尝试将 $scope.data 传递到 param 对象中,从控制器传递到 Angular 中的服务
- 如何从 AngularJS 中的服务调用工厂
- Fluxxor / React.JS中的服务调用
- 从 AngularJS 中的服务属性更新$scope
- 如何使用 AngularJS 中的服务在多个控制器之间共享数据
- 如何在NW.js中的服务页面中运行脚本
- AngularJS中的服务不工作
- 从AngularJS中的服务获取数据后,如何更新$scope是最好的方法
- 从另一台服务器获取node.js中的服务映像
- 访问@CanActivate钩子中的服务
- AngularJS学习服务和工厂,工厂中的服务
- 解决app.run中的服务,错误的逻辑
- 使用指令范围中的参数从角度指令中的服务加载数据
- 使用ng开关进行ng重复:需要呼叫锚中的服务.怎样