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给了你异步的能力,你还能要求什么呢。

    开整吧,祝你好运!

  • 相关阅读:
    Redis string
    java 是 传值还是传址 Pass-by-value or Pass-by-reference
    IDEA 适用技巧
    测试 MD
    pyqt5 学习总结
    win10 安装anaconda 无法使用pip 报错缺少SSL模块
    Hadoop datanode无法启动
    Ansible 安装jdk
    java 安装后 不能 java javac 说找不到命令 -bash: javac: command not found
    如何去掉MapReduce输出的默认分隔符
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7652156.html
Copyright © 2011-2022 走看看