Dart 异步编程(三):详细认识
2024-09-08 13:39:26
基本概念
普通任务按照顺序执行;异步任务将在未来的某个时间执行。
实际演示
void main() {
// waitFuture 函数是一个异步函数,阻塞会发生在函数内部
waitFuture();
// 第 5 行的任务不是异步的任务,线程会直接执行,不等待。
print('The normal task was completed by main thread.');
}
// 加了一个async之后,就是一个异步函数,异步函数里面的所有任务都是阻塞的。
void waitFuture() async {
print('The future task begins to start.');
// 任务开始等待
await Future.delayed(Duration(seconds: 2));
// 前面有一个 await 的任务,等待上一个任务执行完擦执行下一步
print('Wait for future task to complete.');
}
分析
任务的编写顺序是:
- print('The future task begins to start.');
- await Future.delayed(Duration(seconds: 2));
- print('Wait for future task to complete.');
- print('The normal task was completed by main thread.');
第三和第四个普通任务被第二个异步任务阻塞,必须等待异步任务完成之后才可以按照顺序执行。所以,这三个句子的打印顺序是:
- The future task begins to start.
- The normal task was completed by main thread.
- Wait for future task to complete.
最新文章
- 刨一刨内核container_of()的设计精髓
- 2014 网选 5024 Wang Xifeng's Little Plot
- 前端实战——前端效果accordition的实现
- codevs 1228 苹果树
- AMQ学习笔记 - 12. Spring-JmsTemplate特性设置
- CSS3实战:让我们尽情的圆角吧
- spring技术翻译开始
- VI 配置文件(略全)
- JSON中JObject和JArray,JValue序列化(Linq)
- DirectFB 之 字体显示(2)
- [js高手之路] 跟GhostWu一起封装一个字符串工具库-扩展字符串位置方法(4)
- Circle
- 利用requirejs实现vue的模块化开发
- .NET MVC全局异常处理(二)
- appium+夜神模拟器+python安卓app爬虫初体验
- java连接数据库报了ssl连接的警告
- [EXP]Cisco RV110W - Password Disclosure / Command Execution
- ubuntu ssh 与 Samba安装
- 基本数据类型(list,tuple)
- MVVM框架在unity开发中的使用