构建一个离子应用程序并突然遇到一个问题,我发现很难调试浏览器在哪里推迟'长时间运行的计时器任务导致我的视图只在其控制器中执行一次代码(即使显式重新加载控制器)。
警告是:
延迟长时间运行的计时器任务以提高滚动平滑度。见crbug.com/574343。
我之后的事情:
提前致谢。
更新 我觉得重要的是要注意,虽然从来没有收到错误,只有警告作为我的问题的原因,但我已经回到了工作版本。
此工作版本仍然出现警告但不影响我的应用程序的运行。
答案 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?
,也会在这里回答