Dart-异步编程方式一 Future

async和await方式

在Dart2中要想使用async实现类似于Java中的异步编程,必须在其修饰的异步方法中结合await关键字使用才能达到相应的效果。否则该方法仍为同步方法,并在上下文中以同步方式执行。

Version note: In Dart 1.x, async functions immediately suspended
execution. In Dart 2, instead of immediately suspending, async functions
execute synchronously until the first await or return.

即判断一个async方法是同步执行还是异步执行,在2.2以后是可以动态变化的:

可以以同步状态一直运行该方法(当然这时候async加与不加也没有什么意义了)。

如使用async但其中不加await,或使用await但不返回Future


可使由同步状态转变为异步状态(以下三种情形)。

Note that an async function starts executing right away (synchronously). The function suspends execution and returns an uncompleted future when it reaches the first occurrence of any of the following:

  • 1.The function’s first await expression (after the function gets the uncompleted future from that expression).
  • 2.Any return statement in the function.
  • 3.The end of the function body.

对于情形1需注意:
举例

void fun() asyn{
    await funA();
}

await所等待的A方法或Future API必须返回Future<T>对象,(A若返回数据类型T,await会对返回的类型T封装成Future<T>),我想说明的一点是A方法是会立刻执行的且返回Future<T>对象,并且该过程是在同一个isolate中进行的,通俗点讲就是在仍是在主线程中执行的,还未进入异步执行状态(异步状态是在稍后时间中的Futurez中)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 花季焦小桥 雨在脚下挣扎雪花随风儿去了种子无法选择土壤默默地萌发着刚强 回眸许多细节屈辱的枝叉旁逸斜出伸展难以掩饰...
    焦小桥阅读 5,458评论 18 96
  • 本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获。由于个人水平有限,不对之处还望矫正!...
    Steven_cao阅读 4,286评论 0 4
  • 时间管理: 专注做好一件小事 经理好的时候做重要的事。 一次只养成一个习惯。 计划: 工艺验证培训一天 昨日清单完...
    四喜小胖阅读 1,288评论 0 0

友情链接更多精彩内容