更新:虽然我一年多前就问过这个问题,但仍然没有答案。出于好奇,我用 IntelliJ IDEA 重现了今天在 Eclipse 中观察到的问题。
我最近正在调试一个类,其中包含执行大量操作的阻塞且长时间运行的方法。有趣的是,调试速度有时变化很大。我有一种感觉,速度与不同的调试方法(Step Into、Step Over、Step Return、Resume)相关。
我写了一个最小的例子,可以在以下课程的帮助下重现和衡量我的感受:
测试类只是测量计数器在“长时间运行”操作中递增的频率。为了测试假设,我在调用之前设置了一个断点来停止程序longRunningOperation
,然后应用不同的调试方法。
给定显示的断点,我使用不同的调试策略以不特定的顺序执行了多次重复测量(以最大限度地减少系统错误的可能性):
| #| 运行| 不带断点 | 简历 | 结束 | 进入+返回| 进入+简历 | |----------|----------|----------------|-------- ---|----------|-------------|----------| | 1 | 863342711 | …
在某些情况下,异步操作的返回值不重要或根本不给出.在这些情况下,异步操作的方法签名通常定义Observable<any>
或Promise<any>
作为返回值.
例如,Ionic2 NavController定义:
/** // ...
* @returns {Promise} Returns a promise which is resolved when the transition has completed.
*/
abstract remove(/* ... */): Promise<any>;
Run Code Online (Sandbox Code Playgroud)
在没有查看实际实现的情况下,我无法确定是否确实没有发出任何值(例如null
或undefined
),或者我是否可以从发出的值中提取一些有用的信息.
Observable<void>
?我没见过Observable<void>
或Promise<void>
在野外.通过使用它可以清楚地发现没有有用的值.是否有任何技术原因不使用void
带有可观察量的类型?或者为什么没有人用它来指定空值?