当前位置: 首页 > 知识库问答 >
问题:

async和async*在DART中有什么区别?

拓拔骁
2023-03-14

我正在做一个应用程序使用flutter框架。在此过程中,我遇到了DartAsyncAsync*中的关键字。谁能告诉我它们有什么不同吗?

共有1个答案

颛孙钱青
2023-03-14

将函数标记为AsyncAsync*允许它使用Async/Await作为Future

两者的不同之处在于Async*将始终返回并提供一些语法技巧,以便通过yield关键字发出值。

因此,我们可以做到以下几点:

Stream<int> foo() async* {
  for (int i = 0; i < 42; i++) {
    await Future.delayed(const Duration(seconds: 1));
    yield i;
  }
}

这个函数每秒发出一个值,每次递增。

 类似资料:
  • 问题内容: 我已经在移动应用程序和Web应用程序中使用了ECMAScript 6 和ECMAScript 7功能(由于Babel)。 第一步显然是达到ECMAScript 6级别。我学习了许多异步模式,promise(确实是很有希望的),生成器(不确定为什么使用*符号)等。其中,promise非常适合我的目的。而且我已经在我的应用程序中使用它们很多次了。 这是我如何实现基本诺言的示例/伪代码- 随

  • 问题内容: 我已经在移动应用程序和Web应用程序中使用过ECMAScript 6 和ECMAScript 7功能(由于Babel)。 第一步显然是达到ECMAScript 6级别。我学习了许多异步模式,promise(确实是很有希望的),生成器(不确定为什么使用*符号)等。其中,promise非常适合我的目的。而且我已经在我的应用程序中使用它们很多次了。 这是我如何实现基本诺言的示例/伪代码- 随

  • 在库中,可以使用(带有)或(带有)启动新的coroutine。它们之间有什么区别?

  • 在阅读了这篇博文之后https://blogs.msdn.microsoft.com/pfxteam/2012/03/24/show-i-exposite-asynchronous-wrappers-for-synchronal-methods/,我认为第一个实现是“正确的”,因为“doSomethingAsync()”实际上只是将方法卸载到threadpool中,博文指出: 不应纯粹为了卸载而公

  • 就像在async fn,?在async代码块内的使用很常见。但是,async代码块的返回类型是没有明确说明的。这可能会导致编译器无法推断async代码块的 error 类型。 例如,此代码: let fut = async { foo().await?; bar().await?; Ok(()) }; 将触发此错误: error[E0282]: type annotati

  • 我们都喜欢 Rust 允许我们编写快速,安全的软件。但是为什么要编写异步代码呢? 异步代码允许我们在同一 OS 线程上,同时运行多个任务。在典型的线程应用程序中,如果您想同时下载两个不同的网页,则需要将工作分散到两个不同的线程中,如下所示: fn get_two_sites() { // Spawn two threads to do work. let thread_one = thre