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

    开整吧,祝你好运!

  • 相关阅读:
    课程开始的第一次作业
    第四次寒假作业——实现五种语言的选择
    关于改良报告与学习总结(Ⅰ)
    Vue路由守卫之路由独享守卫
    Vue路由守卫之组件内路由守卫
    Vue中如何插入m3u8格式视频,3分钟学会!
    Vue中如何使用less
    第一章 初识爬虫
    【JQuery】注册中实现图片预览
    【Python】多种方式实现生成验证码
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7652156.html
Copyright © 2011-2022 走看看