Dart定时任务
记录 Dart 实现定时任务的几种方式
Timer.Periodic()
1 | Timer Timer.periodic(Duration duration, void Function(Timer) callback) |
该方法接受持续时间和回调函数参数
eg:
1 | import 'dart:async'; |
Stream.periodic()
take(n)
方法在Stream对象上允许执行n次的计数。listen()
事件捕获发射的事件并执行函数。箭头函数被用来执行。
1 | import 'dart:async'; |
Timer.Periodic()
和 Stream.periodic()
都有一个问题 , 首次执行不是立即执行
这样在实际业务中使用起来就比较麻烦 , 要手动先执行一次 , 然后再开启循环 ,自己要手动判断是否开启循环 , 非常麻烦. 因此这里将采用 rxDart 加操作符来实现逻辑上的 interval
rxDart
1 | List<int> list = [1,2,3,4,5]; |
这里是将遍历一个 index 比原数组大1的数组,然后根据 index 取数组元素执行 .
startWith
是将立即执行第一个元素 , 然后下一次取数据直接从 1
的位置取 , 从而达到了常规 rx
的 interval
效果 , 且总数可控.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Halcyon Days!