gpt4 book ai didi

dart - 有没有一种好的方法可以在Dart的async方法中编写 "wait for variables to change"?

转载 作者:行者123 更新时间:2023-12-03 02:49:09 26 4
gpt4 key购买 nike

我用Dartlang编写了一个程序,该程序将停止处理,直到变量foo变为false为止,如下所示。
它是可执行的,但是继续在一会儿语句中返回Future是很笨拙的。
有没有办法清楚地写出来?

  Future asyncMethod() async {

while (foo) {
await new Future(() {
return null;
});
}

Unity的协程可以用下面的一行写成,所以我想更清楚一点。
yield return new WaitWhile(() => foo);

最佳答案

您正在使用计时器每隔一段时间轮询一次变量。有很多方法可以做到这一点。我只想进行完全简单的实现:

Future waitWhile(bool test(), [Duration pollInterval = Duration.zero]) {
var completer = new Completer();
check() {
if (!test()) {
completer.complete();
} else {
new Timer(pollInterval, check);
}
}
check();
return completer.future;
}

有了该功能,您就可以编写

await waitWhile(() => foo);

等待 foo变为假。

关于dart - 有没有一种好的方法可以在Dart的async方法中编写 "wait for variables to change"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47776045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com