dart - Dart 中的流是什么

标签 dart flutter

Dart 语言中异步和流有什么区别,我们应该使用流而不是异步。官方文档中描述了流代表数据的顺序。

最佳答案

异步执行正在注册一个回调,当其他计算完成时会调用该回调。 这可以是像 file.readAsString() 这样的操作系统,也可以是对服务器的 HTTP 请求,客户端在其中继续执行 UI 渲染(或其他操作),当服务器的响应到达时,您的调用代码来处理响应。

在 Dart 中,您通常会从此类异步调用中返回 Future,您可以在其中使用 .then(/* 在此处传递回调 */) 注册回调。

asyncawait 是语法糖,因此您不需要使用 .then(...).then(... )

可以是同步的或异步的,但异步在这里的含义与上面解释的异步不同。

流在某些方面类似于 Future,但如果发出多个事件,则可以多次调用回调,直到发送者或接收者关闭流。

异步执行完成后会完成一次Future,仅此而已。

流也可以被视为像数组一样可迭代,但其中的项目是推送而不是拉取。

主要区别还在于,流有许多运算符可用于映射流、 fork 和加入多个流等等。 其中许多运算符让人想起可用于数组等集合的方法,因为如上所述,流与可迭代对象有相似之处。

流组合得很好,并且通过一组可用的运算符,流允许一种非常强大的声明式编程,通过几个流和运算符的良好组合可以实现很多目标。

关于dart - Dart 中的流是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870623/

相关文章:

flutter - 在运行默认应用程序时,Flutter 在切换到 Master 后抛出“日志阅读器意外停止”

flutter - 如何定位更改flutter TextFormField前缀图标?

flutter - 有一个适合上下文 flutter 大小的容器吗?

flutter - 如何使用flutter动态地将TableRow添加到Table中

当我热重新加载或关闭应用程序时,它不会让用户保持登录状态

flutter - 为什么flutter会向我显示这个错误,我该如何解决?

flutter - 不要跨异步间隙使用 BuildContexts。将 pub yaml 更新到主要版本后

sockets - chrome应用程序中用于dart的Socket API的计划

flutter - 如何在Flutter中使小部件的大小与另一个小部件的大小相同

dart - 使用 Targetplatform 导致布局问题