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

Tob*_*zau 6 dart

我正在使用一个小型Web服务器,我正在使用该async软件包实现一个版本,并且一个同步版本在一个单独的隔离中执行每个请求.我想简单地将文件流传输到HttpResponse,但我无法同步.我无法找到一种既不等Stream也不Future等同的方法.我现在正在使用一个RandomAccessFile有效的,但它变得更加混乱.

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

有没有办法同步等待a Future和a Stream?如果没有,为什么?

Sha*_*uli 1

AFAIK 没有办法同步等待 Future 或 Stream。为什么?因为这些在定义上几乎是异步的,并且正如您所发现的,这些 API 在设计时就考虑到了异步行为。

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

  • 当然它们是异步的,但如果我想在单独的隔离中使用流,就有充分的理由等待完成。异步代码更加复杂。鉴于所提供的 API,dart 团队似乎希望为同步编程提供良好的基础。在 Future 的情况下,一个简单的 `T get({timeout: Duration})` 就可以做到这一点。流还需要更多。因此,根据定义说它们是异步的并不能解释它。 (5认同)