未来.延迟执行



得到了一些例子。

void main() {
A a = A();
transform(a);
print(a.str + ' sync');
}
Future<void> transform(A a) async {
await Future.delayed(Duration(seconds: 3), () => a.str = 'B');
print(a.str + ' async');
}
class A {
String str = 'A';
}

输出:

A sync
B async

下一个例子

void main() {
A a = A();
transform(a);
print(a.str + ' sync');
}
Future<void> transform(A a) async {
Function f = () {
a.str = 'B';
};
await Future.delayed(Duration(seconds: 3), f());
print(a.str + ' async');
}
class A {
String str = 'A';
}

带输出:

B sync
B async

我认为f((在第二种情况下被执行但没有返回,所以我对.str值进行了类似的修改,稍后返回,这是对的吗?或者正确的答案是什么?

在第二个示例中,您有以下行:

await Future.delayed(Duration(seconds: 3), f());

这里要做的是执行变量f所指向的函数,并使用此方法的结果作为Future.delaye的第二个参数。原因是在变量f的名称后面有(),用于表示要在没有任何参数的情况下执行f指向的方法。

您应该做的是(如果您想将函数本身作为Future.delayed的第二个参数发送(只需使用f:

await Future.delayed(Duration(seconds: 3), f);
await Future.delayed(Duration(seconds: 3),(){f();});

这是我想要的

最新更新