【发布时间】:2016-09-29 20:49:43
【问题描述】:
我喜欢 Dart 中的 await for 构造。
如何使用常规 for 循环实现类似的功能?
有点像
// beware! fictional code.
var element = stream.next();
for(; stream.isEndReached(); element = stream.next()) {
// use element here
}
// or probably it will be like this, right?
var element = await stream.next();
for(; await stream.isEndReached(); element = await stream.next()) {
// use element here
}
但我不知道在此处使用什么函数来代替 next() 和 isEndReached()。如果您能给我一个与async for 完全一样的完整示例,那就太好了。
编辑:这是我要求这样做的实际原因:我想做这样的事情:
if (!stream.isEndReached()) {
var a = await stream.next();
// use a
}
if (!stream.isEndReached()) {
var b = await stream.next();
// use b
}
// have an arbitrary number of these
我需要像这样一件一件地消耗物品。这就是为什么我要问我的.next() 和.isEndReached() 方法映射到流类中的哪些实际方法。
【问题讨论】:
-
那么,使用带有 .forEach 的闭包是唯一的选择吗?我说的不可能吧?
-
您需要将调用与
then()链接起来,以确保一个接一个地执行。我看不到使用for循环的方法。 -
好吧,那些我们迫不及待的方法是什么?而不是我的 next() 和 isEndReached()
-
不确定您上次评论的意思。你可以等待这些方法。只是
for不提供延迟执行的方法,直到上一次迭代中的Future完成。当您可以只使用await for()时,这个讨论还有什么意义?
标签: dart async-await