美文网首页
Flutter 异步

Flutter 异步

作者: ToBeRichGirl | 来源:发表于2020-05-15 11:20 被阅读0次

业务流程:请求用户个人信息,获取到用户个人信息后,为了使用方便,我们需要将其缓存在本地

Future<String> login(String userName,String password){

    //... 用户登录

}

Future<String> getUserInfo(String id){

    //... 获取用户信息

}

Future saveUserInfo(String userInfo){    

    //...保存用户信息

}

实现业务流程 Future版

login('zhangsan','*****').then((id){

    return getUserInfo(id);

}).then((userInfo){

    return saveUserInfo(userInfo)

}).then((e){

    //...

}).catchError((e){

    //错误处理

}).whenComplete((e){

    //无论成功或失败都会走到这里

})

实现业务流程 async/await版

task() async {

    try{

        String id= awiat login('zhangsan','******');

    String userInfo = await getUserInfo(id);

    await saveUserInfo(userInfo);

    //执行接下来的操作

    }catch(e){

        //错误处理

    }

}

业务场景:等待多个异步任务都执行结束后才进行一些操作,比如我们有一个界面,需要先分别从两个网络接口获取数据,获取成功后,我们需要将两个接口数据进行特定的处理后再显示到UI界面上

Future.wait([

    //模拟请求1

    Future.delayed(new Duration(seconds:4),(){

        return 'world';

},

    //模拟请求2

    Future.delayed(new Duration(seconds:2),(){

        return 'hello';

    }

]).then((results){

    print(results[0]+results[1]); //输出 hello world

}).catchError((e){

    //处理错误

}).whenComplete((e){

    //无论成功或失败都会走到这里

});

业务场景:在执行异步任务时,可以通过多次触发成功或失败事件来传递结果数据或错误异常。 Stream 常用于会多次读取数据的异步任务场景,如网络内容下载、文件读写等

Stream.fromFutrues([

    Future.delayed(new Duration(seconds:1),(){ return "hello 1"}),

    Future.delayed(new Duration(seconds:4),(){ throw AssertionError("Error")}),

    Future.delayed(new Duration(seconds:2),(){ return "hello 3"}),

]).listen((data){

    print(data);

},onError:(e){

    print(e.message)

},onDone:(){  //可选命名参

    //

})

依次输出 hello1 

               hello 2

               Error

相关文章

  • Flutter 学习之路 - 异步任务

    实验 Flutter 的异步任务 --- 代码Github地址 Fultter 异步任务试验 Flutter 在很...

  • Flutter 异步

    业务流程:请求用户个人信息,获取到用户个人信息后,为了使用方便,我们需要将其缓存在本地 Future login...

  • Flutter - 异步

    前言 首先Dart是单线程的 开发中肯定会遇到很多耗时操作的,而单线程肯定不能一直在等待这些耗时操作完成,而造成阻...

  • Flutter异步

    多个任务完成后执行下一个任务Future printUserName() async {List r...

  • 2019-09-23: 十一:Flutter之Dart异步操作?

    十一:Flutter之Dart异步操作? 1: Dart 的异步模型?我们先搞清楚dart是如何搞定异步操作的?1...

  • flutter之---Future的正确用法

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • flutter Future

    在flutter中经常会用到异步任务,dart中异步任务异步处理是用Future来处理,那么如何实现用Future...

  • Dart中的异步支持

    文章参考:《Flutter实战》 使用async和await关键字编写异步程序async :用来表示函数是异步的,...

  • flutter 异步浅析

    以下内容从官网得到:https://webdev.dartlang.org/articles/performanc...

  • Flutter 异步编程

    Dart 和 JavaScript 共同点是——单线程,同步代码会阻塞程序。 因此程序里有大量的异步操作,它是用F...

网友评论

      本文标题:Flutter 异步

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