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

    开整吧,祝你好运!

  • 相关阅读:
    获取IP
    秒 转为年天分秒格式
    layui的弹层中的html元素无法被操作,比如单击
    Redis 基本操作 具体运用
    phpstorm Class name constant is available in PHP 5.5 only
    express-art-template 模板语法不带引号输出MongoDB数据库的_id,原样输出
    TypeError: Cannot set property 'username' of undefined at processTicksAndRejections (internal/process/task_queues.js:93:5)
    Error: No default engine was specified and no extension was provided.
    文件上传
    日志
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7652156.html
Copyright © 2020-2023  润新知