Dart 语言中异步和流有什么区别,我们应该使用流而不是异步。官方文档中描述了流代表数据的顺序。
最佳答案
异步执行正在注册一个回调,当其他计算完成时会调用该回调。
这可以是像 file.readAsString()
这样的操作系统,也可以是对服务器的 HTTP 请求,客户端在其中继续执行 UI 渲染(或其他操作),当服务器的响应到达时,您的调用代码来处理响应。
在 Dart 中,您通常会从此类异步调用中返回 Future
,您可以在其中使用 .then(/* 在此处传递回调 */)
注册回调。
async
和 await
是语法糖,因此您不需要使用 .then(...).then(... )
。
流可以是同步的或异步的,但异步在这里的含义与上面解释的异步
不同。
流在某些方面类似于 Future
,但如果发出多个事件,则可以多次调用回调,直到发送者或接收者关闭流。
异步执行完成后会完成一次Future
,仅此而已。
流也可以被视为像数组一样可迭代,但其中的项目是推送而不是拉取。
主要区别还在于,流有许多运算符可用于映射流、 fork 和加入多个流等等。 其中许多运算符让人想起可用于数组等集合的方法,因为如上所述,流与可迭代对象有相似之处。
流组合得很好,并且通过一组可用的运算符,流允许一种非常强大的声明式编程,通过几个流和运算符的良好组合可以实现很多目标。
关于dart - Dart 中的流是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870623/