Angularjs推迟了日志运行计时器任务

Vin*_*nce 43 javascript angularjs ionic-framework

构建一个Ionic应用程序突然遇到一个我发现很难调试的问题,浏览器"推迟"长时间运行的计时器任务导致我的视​​图只在其控制器中执行一次代码(即使控制器显式重新加载).

警告是:

延迟长时间运行的计时器任务以提高滚动平滑度.见crbug.com/574343.

我在追求的是什么:

  • 了解警告及其发生的原因
  • 有关如何调试此类警告的任何指导.

提前致谢.

更新 我觉得重要的是要注意,虽然从来没有收到错误,只有警告作为我的问题的原因,我已经回到了工作版本.

此工作版本仍然出现警告但不影响我的应用程序的运行.

Vis*_*wan 7

以及当你使用$ timeout执行任务时,你必须停止并销毁它们,否则它们会产生你说的错误

例如:

var timer = $timeout(
                        function() {
                            console.log( "Timeout executed", Date.now() );
                        },
                        2000
                    );
Run Code Online (Sandbox Code Playgroud)

如果您按上述方式启动超时,则必须按如下方式销毁计时器:

                    // When the DOM element is removed from the page,
                    // AngularJS will trigger the $destroy event on
                    // the scope. This gives us a chance to cancel any
                    // pending timer that we may have.
$scope.$on(
                        "$destroy",
                        function( event ) {
                            $timeout.cancel( timer );
                        }
                    );
Run Code Online (Sandbox Code Playgroud)


小智 1

当仅在第一次加载视图时调用函数时,我遇到了这个问题。注意到控制台中的此警告,但不确定这是否与仅调用一次函数有关。在控制器中,我将函数调用移至“$ionicView.enter”内,每次加载视图时都会调用它。

$scope.$on('$ionicView.enter', function () {
            callMyFunction();
        });
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。