//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的更多相关文章

  1. Dart

    Dart异步与阻塞 import 'dart:async'; import 'dart:io'; void main() async { for(int i = 0;i<10;i++) { as ...

  2. Dart - Isolate 并发

    在Dart中实现并发可以用Isolate,它是类似于线程(thread)但不共享内存的独立运行的worker,是一个独立的Dart程序执行环境.其实默认环境就是一个main isolate. 在Dar ...

  3. Dart 基础重点截取 Dart 2 20180417

    官网教程 https://www.dartlang.org/guides/language/language-tour dart是一个单线程的语言,没有多线程 Final and const If y ...

  4. Flutter Dart中的异步

    以下内容从官网得到: https://webdev.dartlang.org/articles/performance/event-loop Even-Looper Dart是单线程模型,也就没有了所 ...

  5. Flutter与Dart 入门

    Flutter简介 Flutter是google推出的,一个使用Dart语言开发的跨平台移动UI框架,通过自建绘制引擎,能高性能.高保真地进行Android和IOS开发. Flutter是什么 Flu ...

  6. Dart异步与消息循环机制

    Dart与消息循环机制 翻译自https://www.dartlang.org/articles/event-loop/ 异步任务在Dart中随处可见,例如许多库的方法调用都会返回Future对象来实 ...

  7. 30分钟掌握Dart语言

    在Dart中,一切都是对象,一切对象都是class的实例,哪怕是数字类型.方法甚至null都是对象,所有的对象都是继承自Object 虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推 ...

  8. Dart Socket 与Java Socket连接

    -------------------------------------------------------------  Dart    SocketClient----------------- ...

  9. Flutter学习笔记(2)--Dart语言简介

    Dart简介: Dart诞生于2011年10月10日,Dart是一种"结构化的web编程"语言,Dart虽然是谷歌开发的计算机编程语言,但后来被ECMA认定位标准,这门语言用于We ...

随机推荐

  1. GEM5安装

    转自:http://blog.sina.com.cn/s/blog_548b0a230101cagk.html GEM5在ubuntu13.10下安装过程,首先下载gem5_stable最新安装包,解 ...

  2. 对类型“Func<,>”的引用声称该类型是在“mscorlib”中定义的,但未能找到

    报错 右击→属性

  3. Prometheus的架构及持久化

    原文: https://my.oschina.net/go4it/blog/855598 Prometheus是什么 Prometheus是一个开源的系统监控和报警工具,特点是 多维数据模型(时序列数 ...

  4. Vue 超快速学习

    Vue 超快速学习 基础知识: 1.vue的生命周期: beforeCreate/created. beforeMount/mounted. beforeUpdate/updated. beforeD ...

  5. 【绿书】 模拟,rep大坑

    https://vjudge.net/contest/229603#problem/B 绿书题 大模拟,绿书上用了个比较麻烦的输入,其实只要getchar()!='0'就行 坑: rep(i,0,s. ...

  6. centos7上安装nagios及增加监控服务器

    参考博客 http://blog.csdn.net/firstar521/article/details/52848393 当配置了linux.cfg和Windows.cfg文件,重启nagios后发 ...

  7. 【实战解析】基于HBase的大数据存储在京东的应用场景

    京东技术 https://mp.weixin.qq.com/s?src=11&timestamp=1551342955&ver=1455&signature=0hYp8OsxY ...

  8. 转:ActiveMQ的作用总结(应用场景及优势)

    原文地址: ActiveMQ的作用总结(应用场景及优势) 业务场景说明: 消息队列在大型电子商务类网站,如京东.淘宝.去哪儿等网站有着深入的应用, 队列的主要作用是消除高并发访问高峰,加快网站的响应速 ...

  9. NMAP执行脚本smb-check-vulns.nse出错

    错误信息:NSE: failed to initialize the script engine: /usr/bin/../share/nmap/nse_main.lua:801: ‘smb-chec ...

  10. MSSQL2008 部署及开启远程连接

    最近不少用户在windows2003 server 32位操作系统上安装SQL Server2008总是失败,出现大量错误.今天经过通过我反复测试安装,找出了一个便捷的安装方法,节省大家宝贵时间,具体 ...