Jim*_*ton 5 timer event-loop reentrancy deferred-execution dart
我通过实验发现创建一个持续时间为0的计时器允许我将工作推迟到事件队列中.我非常喜欢这个功能,因为它可以避免很多令人讨厌的重入问题.这种有意识的功能是否会改变?它可以添加到文档中吗?如果没有,是否有支持的方式来做到这一点?
这样做的正确方法是scheduleMicrotask(Function callback).
请参阅此处的API文档:https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-async#id_scheduleMicrotask
关于异步任务和事件循环的一篇很棒的文章在这里:https://www.dartlang.org/articles/event-loop/
现在,答案是肯定的,new Timer(0, callback)是推迟函数调用的最简单方法.
很快,希望http://dartbug.com/5691将被修复,并且会有更好的方法.Timer的问题是HTML规范说回调应该在4ms之后发生.取决于你正在做什么,这可能是问题.
微软推出setImmediate()解决此问题.在重绘之后,它会在下一个事件循环开始时调用回调.我在Dart中的首选解决方案是Future.immediate()推迟到下一个事件循环,并且可能像defer()这样的函数进行回调.
但new Timer(0, f)即使有更好的解决方案,仍然可以工作.我不介意它的皮棉警告.
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |