美文网首页
Dart Future、async、await异步

Dart Future、async、await异步

作者: 喜剧收尾_XWX | 来源:发表于2020-08-13 07:21 被阅读0次

原文参考:
作者:天色将变
链接:https://www.jianshu.com/p/304f05a442db
来源:简书


1.概述

  • Dart通常是单线程执行。
  • 如果是执行的网络请求、访问数据库或文件等,那么方法不会立刻返回结果,需要一定的执行时间。这时不能一直等待,这种情况,可以用Future描述未来的结果。

2.Future基本使用

 // 假设method1是网络请求
    Future<String> f1 = new Future(method1);//此时f1就是未来的结果
    // 未来的结果获取,使用then
    f1.then((String value) {
      print("value1=$value");
    });

3.async 与await 将异步方法按同步方法操作

async 描述一个执行异步操作的方法
await 表示一直等待异步方法返回结果,才继续往后执行
如:

  Future<String> method5() async {
    return "5";
  }
  void testD() async {
    method1();
    String f5 = await method5();
    print(f5);
    method3();
  }

结果:

1
5
3

4. Future的一些作用

  • Future.delayed
Future<void> hideScreen() async {
    Future.delayed(Duration(seconds: 10), () {
      FlutterSplashScreen.hide();
    });
  }
  • Future.value
Future<bool> exitApp() {
    if (_lastPressedAt == null ||
        DateTime.now().difference(_lastPressedAt) > Duration(seconds: 2)) {
      Fluttertoast.showToast(
          msg: "再按一次退出应用",
          backgroundColor: Colors.grey,
          toastLength: Toast.LENGTH_SHORT,
          fontSize: 14);
      //两次点击间隔超过2秒则重新计时
      _lastPressedAt = DateTime.now();
      return Future.value(false);
    }
    return Future.value(true);
}

相关文章

网友评论

      本文标题:Dart Future、async、await异步

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