Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同步的等待未来或流在Dart中完成的同步的_Dart - Fatal编程技术网

同步的等待未来或流在Dart中完成的同步的

同步的等待未来或流在Dart中完成的同步的,dart,Dart,我正在玩一个小型web服务器,我正在使用async包实现一个版本,一个同步版本在一个单独的文件中执行每个请求。我只想通过管道将一个文件流传输到HttpResponse,但我无法同步完成。我找不到一种方法来同步等待流和未来。我现在使用的是一个RandomAccessFile,它可以工作,但会变得更混乱 一种解决方案是执行一个定期计时器来检查未来是否完成(通过设置布尔值或类似值),但这绝对不是我想要使用的 有没有办法同步等待未来和流?如果没有,原因是什么?AFAIK没有同步等待未来或流的方法。为什么

我正在玩一个小型web服务器,我正在使用
async
包实现一个版本,一个同步版本在一个单独的文件中执行每个请求。我只想通过管道将一个文件流传输到
HttpResponse
,但我无法同步完成。我找不到一种方法来同步等待
未来
。我现在使用的是一个
RandomAccessFile
,它可以工作,但会变得更混乱

一种解决方案是执行一个定期计时器来检查未来是否完成(通过设置布尔值或类似值),但这绝对不是我想要使用的


有没有办法同步等待
未来
?如果没有,原因是什么?

AFAIK没有同步等待未来或流的方法。为什么?因为它们在定义上是异步的,正如您所发现的,这些API在设计时考虑了异步行为


有两个将来的构造函数,
Future.value()
Future.sync()
,它们会立即执行,但我认为这些可能不是您想要的。

对于将来来这里的访问者来说,他们只是想在未来或流完成后执行一些任务,在异步方法中使用
wait
wait for

未来 流动 注
这在技术上可能不同于执行同步任务,但它实现了在执行另一个任务之前先完成一个任务的目标。

确保它们是异步的,但如果我想在单独的隔离中使用流,有很好的理由等待完成。异步代码更为复杂。考虑到API的存在,DART团队希望为同步编程提供良好的基础。在将来的情况下,一个简单的
T get({timeout:Duration})
就可以做到这一点。溪流需要更多的水。因此,从定义上说它们是异步的并不能解释这一点。“异步代码更复杂”——完全同意。有时你确实需要等待一些事情完成后才能继续。我想我在讨论中读到,这是有计划的,但需要一些时间。另见
final myInt = await getFutureInt();
int mySum = 0;
await for (int someInt in myIntStream) {
  mySum += someInt;
}