基于 tokio
实现了类似于 js
的 setInterval
、setTimeout
的功能
目前提供了以下几个宏:
set_interval!(cb, ms)
创建一个定时器,支持传入一个闭包set_interval_async!(|| future, ms)
创建一个定时器,支持传入一个返回 future 回调set_timeout!(cb, ms)
创建一个延时器,支持传入一个闭包set_timeout_async!(future, ms)
创建一个延时器,支持传入一个 futureclear_timer!(timer_id)
清除定时器注意:
- 由于实现的逻辑,set_interval
受传入的 fn
运行时耗的影响,ms
不是一个固定的间隔
Cargo.toml
toml
[dependencies]
tokio_interval = "<latest-version>"
main.rs
```rust use tokio::time::{sleep,Duration}; use tokiointerval::{setinterval, settimeout, cleartimer};
async fn main() { settimeout!(|| println!("timeout"), 500); setinterval!(|| println!("interval"), 500); // 保存id,以便手动删除 let id = setinterval!(|| println!("clearinterval"), 500); sleep(Duration::frommillis(600)).await; // 删除定时器 clearinterval(id); // 保证定时器可以继续执行 sleep(Duration::from_millis(1200)).await; } ```