asynchronous - 飞镖中 Future.delayed() 的行为
问题描述
我通常用 C++ 编程并且知道睡眠功能是如何工作的,但是现在学习飞镖(用于颤振)我遇到了这个延迟功能
void countSeconds(s) {
for( var i = 1 ; i <= s; i++ ) {
Future.delayed(Duration(seconds: i), () => print(i));
}
}
它在第 i 秒后打印值i
,但它不应该在 1 秒后打印 1,再过 2 秒(即 3)后打印 2,再过 3 秒(即 6 秒)后打印 3 等等。它是如何工作的?
解决方案
这将在 1 秒后打印 1,在 2 秒后打印 2,在 6 秒后打印 3。
for( var i = 1 ; i <= 5; i++ ) {
await Future.delayed(Duration(seconds: i), () => print(i));
}
在异步编程中,您需要等待期货返回结果。否则它将立即返回所有内容
推荐阅读
- python-3.x - 如何打印字典列表的第一个成员的键的值
- r - 如何获取自 1970/01/01 以来的天数与指定年份之间的年数
- php - ACF 禁用/隐藏多个用户名的字段选择选项
- django - Django、Django Rest 框架、React 和活动目录
- google-app-engine - 从 Google App Engine 上的 main.go 传出时,上下文值发生了变化
- javascript - 从元素jQuery获取内联css宽度属性
- .net - 为什么在 UseMvc() 中定义路由之前需要调用 UseRewriter()?
- android - 如何允许在 Android 中覆盖库的字体系列
- excel - 查找最后一行会引发 object required 错误
- xamarin - Xamarin CarouselViewControl 支持自动滑动到下一项?