【发布时间】:2015-04-09 18:42:39
【问题描述】:
dart:html.WebSocket 打开一次,关闭一次。所以我希望onOpen 和onClose 属性是Futures,但实际上它们是Streams。
当然,我可以使用stream.onClose.first 来获得 Future。但是dart:io 版本的WebSocket 上的done 属性正如预期的那样是Future,所以我想知道我是否遗漏了什么。
为什么在dart:html 中使用 Streams 而不是 Futures?
【问题讨论】:
-
只是一个猜测,但也许他们可以发送多个错误,Future 只能提供一个错误。
-
可能是因为它们是 JavaScript DOM 中的事件,所以不存在一次性事件(现在我们在 JS 中也有 Promises/Futures!)。 Dart 代码由 DOM 定义生成,所有事件都被转换为流。