由于 Dart 是单线程编程语言,对于进行网络请求和I/O操作,线程将发生阻塞,严重影响依赖于此任务的下一步操作。

通常,在一个阻塞任务之后还有许许多多的任务等待被执行。下一步任务需要上一步任务的结果,比如:请求一个数据,并将数据显示到界面上,此时,百分之九十的情况有NULL异常。

下面是一个模拟阻塞任务的下一步获取该任务返回的数据时发生的异常:

User user = post('http://api.example.com/get/user/1');
print(user); // => null exception.

Future对象用于表示异步操作的结果,可以很好地解决上诉情况。Future 对象会等待阻塞任务完成之后才执行下一步任务。

post('http://api.example.com/get/user/1').then((value) => print(value));

post方法返回 Future 对象,Future 对象可以链式使用then,等到阻塞任务完成之后进行下一步操作。

最新文章

  1. iOS加密方式及解压缩文件
  2. #研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案
  3. Liunx的各种小指令
  4. 给jar包进行数字签名(2014-06-28记)
  5. 7个惊艳的HTML5 Canvas动画效果及源码
  6. jQuery 元素遍历
  7. 第5章 Posix 消息队列
  8. 如何排查java.lang.NoSuchMethodError错误
  9. I.MX6 android 获取framebuffer信息
  10. codeforces 260 div2 B题
  11. ORACLE参数文件
  12. 【HDOJ】3726 Graph and Queries
  13. Winform控件Enable=false显示优化
  14. Redhat Enterprise 5.4下安装配置Oracle 11g R2详细过程
  15. Hive:添加、删除分区
  16. 学JAVA第二十天,接触异常处理,自定义异常
  17. 【ASP.NET Core快速入门】(十)Cookie-based认证实现
  18. java 11 新的Epsilon垃圾收集器
  19. SVN迁移到GitLab,保留提交记录
  20. C语言博客作业01--分支、顺序结构

热门文章

  1. Linux查看系统参数配置
  2. AcWing-1022
  3. 论文解读(GraphMAE)《GraphMAE: Self-Supervised Masked Graph Autoencoders》
  4. 修改jupyter notebook文件保存目录
  5. SAP FPM 相关包 APB_FPM_CORE
  6. WPF开发随笔收录-ScrollViewer滑块太小解决方案
  7. SpringCloud Alibaba整合Sentinel
  8. 深入解析kubernetes controller-runtime
  9. Windows JDK 的下载与安装
  10. ATM系统开发(Java版)