zoukankan      html  css  js  c++  java
  • 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-prodemo4>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给了你异步的能力,你还能要求什么呢。

    开整吧,祝你好运!

  • 相关阅读:
    解决Too many connections问题
    TPCC-MySQL安装、使用及结果解读
    Spring事务配置
    【转】Spring事务介绍
    Spring AOP的实现原理
    Spring AOP的使用
    Spring整合Junit4进行单元测试
    Spring Bean定义的三种方式
    spring集成Redis(单机、集群)
    Redis搭建(五):Cluster集群搭建
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7652156.html
Copyright © 2011-2022 走看看