pub fn sleep(duration: Duration) -> Sleep ⓘ展开描述
等待直到 duration 已过。
等效于 sleep_until(Instant::now() + duration)。std::thread::sleep 的异步模拟。
在等待 sleep future 完成时不会执行任何工作。Sleep 以毫秒粒度运行,不应用于需要高分辨率定时器的任务。实现是平台特定的,某些平台(特别是 Windows)将提供大于 1 毫秒分辨率的定时器。
若要按计划定期运行某些任务,请参阅 interval。
§Cancellation
取消 sleep 实例的方法是 drop 返回的 future。无需进行额外的清理工作。
§示例
等待 100 毫秒并打印 “已过 100 毫秒”。
use tokio::time::{sleep, Duration};
sleep(Duration::from_millis(100)).await;
println!("100 ms have elapsed");有关更多示例,请参阅 Sleep 类型的文档。
§恐慌
如果未设置当前定时器,此函数会发生 panic。
当 Builder::enable_time 或 Builder::enable_all 未包含在 builder 中时,可能会触发 panic。
每当在 Tokio 运行时之外创建定时器时,它也可能会发生 panic。这就是 rt.block_on(sleep(...)) 会发生 panic 的原因,因为该函数在运行时之外执行。而 rt.block_on(async {sleep(...).await}) 不会 panic,这是因为将函数包装在 async 中使其变为惰性的,从而可以在运行时内成功执行而不会发生 panic。