Dart async proc
//dart
import 'dart:io';
import 'dart:async';
Future printDailyNewsDigest1() {
print('A:');
File file = new File("dailyNewsDigest.txt");
Future future = file.readAsString();
return future;
}
Future printDailyNewsDigest2(String content) {
print('A:$content');
File file = new File("dailyNewsDigest.txt");
Future future = file.readAsString();
return future;
}
Future printDailyNewsDigest3(String content) {
print('A:$content');
File file = new File("dailyNewsDigest.txt");
Future future = file.readAsString();
return future;
}
Future printDailyNewsDigest_1() {
print('B:');
File file = new File("dailyNewsDigest.txt");
Future future = file.readAsString();
return future;
}
Future printDailyNewsDigest_2() {
print('B:');
File file = new File("dailyNewsDigest.txt");
Future future = file.readAsString();
return future;
}
Future printDailyNewsDigest_3() {
print('B:');
File file = new File("dailyNewsDigest.txt");
Future future = file.readAsString();
return future;
}
void chooseBestResponse(List ress) {
print(ress.length);
String B1 = ress[0];
String B2 = ress[1];
String B3 = ress[2];
print('B:[1]$B1');
print('B:[2]$B2');
print('B:[3]$B3');
}
void main() {
printDailyNewsDigest1().then(printDailyNewsDigest2)
.then(printDailyNewsDigest3)
.then((content)=>print('A:$content'))
.catchError((e)=>handleError(e));
Future.wait([printDailyNewsDigest_1(), printDailyNewsDigest_2(), printDailyNewsDigest_3()])
.then(chooseBestResponse)
.catchError((e)=>handleError(e));
}
//执行结果
C:\Dart-pro\demo\4>dart future.dart
A:
B:
B:
B:
A:Winning lotto numbers: [23, 63, 87, 26, 2]
Tomorrow's forecast: 70F, sunny.
Baseball score: Red Sox 10, Yankees 0
3
B:[1]Winning lotto numbers: [23, 63, 87, 26, 2]
Tomorrow's forecast: 70F, sunny.
Baseball score: Red Sox 10, Yankees 0
B:[2]Winning lotto numbers: [23, 63, 87, 26, 2]
Tomorrow's forecast: 70F, sunny.
Baseball score: Red Sox 10, Yankees 0
B:[3]Winning lotto numbers: [23, 63, 87, 26, 2]
Tomorrow's forecast: 70F, sunny.
Baseball score: Red Sox 10, Yankees 0
A:Winning lotto numbers: [23, 63, 87, 26, 2]
Tomorrow's forecast: 70F, sunny.
Baseball score: Red Sox 10, Yankees 0
A:Winning lotto numbers: [23, 63, 87, 26, 2]
Tomorrow's forecast: 70F, sunny.
Baseball score: Red Sox 10, Yankees 0
Finally:
异步执行
printDailyNewsDigest1执行后,立即执行Future.wait
printDailyNewsDigest_1(), printDailyNewsDigest_2(), printDailyNewsDigest_3()执行完后,进入回调过程
回调过程首先进入printDailyNewsDigest1的回调,然后进入Future.then,然后进入printDailyNewsDigest2回调,然后进入printDailyNewsDigest3回调。
Dart 的异步处理过程不太好用,要用最好还是一个future一个then回调来用,因为它的回调时间你可能把握不住!
不过,单线程的Dart给了你异步的能力,你还能要求什么呢。
开整吧,祝你好运!
Dart async proc的更多相关文章
- Dart
Dart异步与阻塞 import 'dart:async'; import 'dart:io'; void main() async { for(int i = 0;i<10;i++) { as ...
- Dart - Isolate 并发
在Dart中实现并发可以用Isolate,它是类似于线程(thread)但不共享内存的独立运行的worker,是一个独立的Dart程序执行环境.其实默认环境就是一个main isolate. 在Dar ...
- Dart 基础重点截取 Dart 2 20180417
官网教程 https://www.dartlang.org/guides/language/language-tour dart是一个单线程的语言,没有多线程 Final and const If y ...
- Flutter Dart中的异步
以下内容从官网得到: https://webdev.dartlang.org/articles/performance/event-loop Even-Looper Dart是单线程模型,也就没有了所 ...
- Flutter与Dart 入门
Flutter简介 Flutter是google推出的,一个使用Dart语言开发的跨平台移动UI框架,通过自建绘制引擎,能高性能.高保真地进行Android和IOS开发. Flutter是什么 Flu ...
- Dart异步与消息循环机制
Dart与消息循环机制 翻译自https://www.dartlang.org/articles/event-loop/ 异步任务在Dart中随处可见,例如许多库的方法调用都会返回Future对象来实 ...
- 30分钟掌握Dart语言
在Dart中,一切都是对象,一切对象都是class的实例,哪怕是数字类型.方法甚至null都是对象,所有的对象都是继承自Object 虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推 ...
- Dart Socket 与Java Socket连接
------------------------------------------------------------- Dart SocketClient----------------- ...
- Flutter学习笔记(2)--Dart语言简介
Dart简介: Dart诞生于2011年10月10日,Dart是一种"结构化的web编程"语言,Dart虽然是谷歌开发的计算机编程语言,但后来被ECMA认定位标准,这门语言用于We ...
随机推荐
- tsm 带库 磁带
磁带和存储池设置 新装入带库的磁带,需执行格式化命令方可使用,而存储池采用手工定义方式加入磁带,所以checkin状态设置为private,而不使用scratch磁带自动定义方式. label lib ...
- 如何打jar包 学习笔记
jar包是由.class文件压缩而成.要查看jar包中的内容,使用压缩工具 解压缩即可.也可以做修改,并重新打成jar包.总结一下最近学到的一些打jar包的方法: 一.DOS下使用jar命令 打jar ...
- css学习_文本有关的样式属性、sublime快捷生成标签
1.css中color定义文本的颜色 写法:(最常用的是16进制的) 2.行间距 line-height 3.水平对齐方式 text-align left right center 4.首 ...
- angularjs 异步请求无法更新数据
angularjs 有个问题就是第二次ajax请求数据再次赋值给 $scope.data,需要更新视图数据的时候,却不能更改视图数据,这个是因为angularjs的$watch不能监听到JS对$sco ...
- XDCTF网络安全大赛——Web100
打开网址 http://game1.xdctf.com:8083/f16c3b1ed800fc78e605/index.php 网页中显示了一张图片,图片名为hackkey.png: 还有一段文字: ...
- Entity Framework 6如何进行导航属性的筛选(context.Msg.First(t=>t.Id==1).Include(t=>t.MsgDetail),筛选MsgDetail带条件)
问题: https://q.cnblogs.com/q/98333/ Msg表(Id,Content,IsDel).内有 virtual ICollection<MsgDetail> Ms ...
- [daily][CentOS][SELinux]用key免登陆不成功,原来是SElinux在搞事情
为了提高效率,一般情况下,会把公钥放到sshd主机的 $HOME/.ssh/authorized_keys 文件内. 把私钥放在client的 $HOME/.ssh/ 下. 然后就可以免密登录了.然而 ...
- Python中生成器和迭代器的区别(代码在Python3.5下测试):
https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...
- win10 安装多个版本的jdk,如何切换
JAVA_HOME C:\software\jdk1.7.0_79 CLASSPATH .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\dt.jar ...
- BeanFactoryPostProcessor vs BeanPostProcessor
BeanFactoryPostProcessors affect BeanDefinition objects because they are run right after your config ...