首页 > 解决方案 > 飞镖中 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 等等。它是如何工作的?

标签: asynchronousflutterdart

解决方案


这将在 1 秒后打印 1,在 2 秒后打印 2,在 6 秒后打印 3。

 for( var i = 1 ; i <= 5; i++ ) {
      await Future.delayed(Duration(seconds: i), () => print(i));
   }

在异步编程中,您需要等待期货返回结果。否则它将立即返回所有内容


推荐阅读