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

时间:2016-04-20 06:29:11

标签: javascript angularjs ionic-framework

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

警告是:

  

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

我之后的事情:

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

提前致谢。

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

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

3 个答案:

答案 0 :(得分:7)

如果您使用$ timeout执行任务,您必须停止并销毁它们,否则会产生您声明的错误

例如:

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

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

                    // 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 );
                        }
                    );

答案 1 :(得分:1)

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

$scope.$on('$ionicView.enter', function () {
            callMyFunction();
        });

希望这有帮助。

答案 2 :(得分:0)

听起来您的浏览器中可能有最大连接数。您可能希望将http请求减少到包含10个请求和10个单独的http请求的单个请求。

关于您的问题的答案是每个浏览器的最大http请求。

  

“最大默认同时持久连接数   服务器/代理:“

如果我正确地假设 - Max parallel http connections in a browser?

,也会在这里回答