如何调试$ionicView.beforeEnter和$ionicView.enter之间的时间
How to debug time between $ionicView.beforeEnter and $ionicView.enter
我使用ionic,$ionicView.beforeEnter
和$ionicView.enter
之间需要超过1s。
我如何才能发现我的代码的哪一部分花费了这么多时间?巴塔朗对我帮助不大,我想不出一个简单的方法来做到这一点。。。
可能没有太大帮助,但当我遇到类似的问题时,我无法使用Chrome调试探查器找到罪魁祸首,不得不逐一注释/排除控制器中的部分代码,我将其转换到控制器中。问题是在控制器初始化阶段配置的某些第三方日历组件减缓了转换(视图显示)。一旦评论出来,一切都很好。由于这不是我的代码,我也不想把它搞砸,所以我不得不在转换中添加一个进度微调器。
也许您可以使用Chrome提供的调试工具,如Timeline或Profile:您可以启动时间线的评测或记录,并检查$ionicView.beforeEnter和$ionicView.enter之间发生了什么。这两个功能都有一个搜索模块,因此您可以查找$ionicView.beforeEnter
,并查看在$ionicView.enter
之前需要什么时间。这可能不是最简单的方法,但希望它能帮助你。
您是否尝试过在控制台的"网络"选项卡中监控流量?以毫秒为单位的时间很好地指示了哪些xhr调用的运行时间比预期的要长。。。进行速度测试。
否则,如果您使用chrome,我只会在Ionic视图的整个状态流中删除一些debugger
语句。
我想不出一种简单的方法来做到这一点。但是,在@nico_提到的基础上,使用chrome javascript调试工具,您应该在$ioniView.beforeEnter
和$ionicView.enter
上设置一个断点,然后在断点之间遍历代码。
您可以在这里阅读更多关于chrome的javascript调试工具以及如何设置断点的信息:https://developer.chrome.com/devtools/docs/javascript-debugging
"断点之间"没有代码。。。这两个事件之间调用了太多函数。。。
--Tyrius
您应该尝试识别运行时间过长的函数。
注意:我认为您的应用程序没有因下载而减慢速度,您可以在Chrome开发工具中检查下载时间(如果TTFB过高,则可能是服务器端速度较慢)。
如果你知道调用了哪些函数,你有两种可能性:
-
当有几个函数并且调用次数不多时:
function ExampleFunction() { console.time("ExampleFunction"); // ExampleFunction code // ... console.timeEnd("ExampleFunction"); // output in console time between time() call and timeEnd() call }
-
如果有很多函数被多次调用:
我建议你使用我的小JS工具MonitorJS来帮助你识别运行时间过长的代码块:
function ExampleFunction() {
let mId = Monitor.Start("ExampleFunction");
// ExampleFunction code
// ...
Monitor.Stop(mId);
}
当你看到哪个函数花费了太多时间时,调用这个函数:
function ShowMonitorRecords() {
// get all records sorted by total_time desc
let records = Monitor.GetAll().sort((a,b)=>{ return b.total_time - a.total_time; });
// print every records
for (let record of records) {
let avg = record.total_time / record.call_count;
console.log(record.name + ": " + record.total_time.toFixed(2)
+ "ms - called " + record.call_count
+ " time(s) - average time : "+ avg.toFixed(2) +"ms");
}
}
// will output something like :
// Foo: 7234.33ms - called 2 time(s) - average time : 3617.16ms
// Bar: 6104.25ms - called 3 time(s) - average time : 2034.75ms
一旦你知道哪个函数花费了太多时间,你就可以缩小启动/停止的范围,以确定减缓应用程序运行速度的确切代码块并进行重构。
希望这能有所帮助!
- 当我在form_for中的text_field_tag中点击Enter时,如何禁止发出POST请求
- JavaScript:在调用函数的文本输入上按enter键
- D3js如何在.enter上下文中在同一级别附加两个子级
- 当阻止Enter键提交AJAX表单时,关注下一个输入是't工作
- 如何编写脚本并在网页上按Enter键
- 如何在按Enter键后调用onclick函数
- 按enter键时,jQuery UI自动完成字段未提交
- 如何通过按Enter提交输入表格,但在按shift和Enter时不提交
- 捕获所有关键输入,直到以响应式编程方式按下 ENTER
- 角度 js - 如何用鼠标单击,然后在 ng-grid 上按 Enter 键
- 通过按“Enter”键显示文本框中的值
- Keyup 事件侦听器在 Chrome 的 Ominbox 上按下 Enter 时触发
- 如果用户在输入上按 Enter 键,则取消挖空速率限制扩展器
- 是否可以在 data.enter() 方法中使用 data.enter() 方法
- 当在文本框中按下Enter键时,重定向到page.aspx
- 如何在JavaScript中为ENTER事件充值
- 当用户点击ctrl+enter时,如何将光标推到下一行
- 如何调试$ionicView.beforeEnter和$ionicView.enter之间的时间
- 从所有带有$ionicView.enter特定属性的angular元素中移除class
- $ionicView.enter和cache:false之间的区别是什么