美文网首页FlutterFlutterDart
Flutter future 与 async await 的区别

Flutter future 与 async await 的区别

作者: Air_w | 来源:发表于2020-04-01 13:52 被阅读0次

    1、Flutter future 与 async await 的区别/异同

    Flutter future 与 async await 的区别/异同
    totem_four_logo.jpg
    :-

    1、目录

    • 1、future
    • 2、async await

    2、概要

    • 1、future 特点:“链式调用”
    • 2、async await 特点:“流程可控”

    3、用法

    async task:

      Future<String> getUserInfo() {
        return Future<String>.delayed(Duration(seconds: 5), () {
          return "delayed task";
        });
      }
    
    

    1、future

    
                  MaterialButton(
                    onPressed: () {
                      print("first");
                      //future
                      getUserInfo().then((value) {
                        print(value);
                      }).catchError((e) {
                        print(e);
                      });
    
                      print("last");
                    },
                    child: Text("Click by future"),
                  ),
    
    

    2、async await

    
                  MaterialButton(
                    onPressed: () async {
                      print("first");
    
                      //async await
                      try {
                        print(await getUserInfo());
                      } catch (e) {
                        print(e);
                      } finally {
                        print("finally");
                      }
    
                      print("last");
                    },
                    child: Text("Click by async"),
                  ),
    

    4、future与async await比较

      1. Future:支持“链式”调用,编写便捷。
      1. Future:异步结果以函数回调的形式返回,对“执行流”控制力较弱。
      1. async await 可“等待异步结果”,对“执行流”控制力较强。
      1. async await 调用await的函数需要async修饰,会导致频繁使用async await关键字

    5、什么时候使用future?什么时候使用async await?

      1. 当“异步的结果对当前控制流没有影响”时,使用“Future”
      1. 当“当前的控制流依赖于异步的结果”时,使用“async await”

    flutter开发者项目示例:

    flutter_app_sample 帮助flutter开发者更快入门、精进,避免不必要的技术坑。
    如果您觉得此项目对您有所帮助,也可以"star"一下,我们得到您的鼓励后会更有动力持续推出更多有益于您的技术示例

    特征:

    • 本项目是主打技术示例,所以涉及到的需求会比较少,涉及到的技术会比较多
    • 本项目是为flutter开发者专门打造的“Api demo app”
    • 本项目不仅包含flutter 各种widget组件,还包含开发包、插件,以及与各平台platforms交互、通信(Platform Channel)的技术示例。
    • 移步查看更多特征......

    相关文章

      网友评论

        本文标题:Flutter future 与 async await 的区别

        本文链接:https://www.haomeiwen.com/subject/xanguhtx.html