在 Angular 1.4 中使用超时而不是 $timeout

Using timeout instead of $timeout in Angular 1.4

我正在实施一个 hack,以便使用 Angular 1.4 指令滚动元素的内容。但是,更改元素滚动位置的代码需要在单击同一元素 x 秒后完成。

这个指令除了改变 HTML 元素的滚动位置外,什么都没有。

我应该使用本机浏览器 setTimeout 还是 $timeout 功能。我觉得使用 $timeout 是不必要的,因为这会触发摘要循环(如前所述,这是不必要的)。

所以我的问题真正归结为:这是一个好主意吗?是否存在类似或其他场景,可以保证在 $timeout 函数上使用本机 setTimeout

AngularJs 已经说明了这一点。 $timeout$interval 都接受一个可选参数,它允许您跳过脏检查:invokeApply 默认设置为 true。

$timeout(someFunction, 1000, false) 将跳过 $digest。你应该总是使用$timeout而不是setTimeout$timeoutsetTimeout 的包装器,能够通过 $exceptionHandler.

处理异常

https://docs.angularjs.org/api/ng/service/$timeout/