Flutter/Dart中的异步编程之Future
Flutter/Dart中的异步编程之Future
前言
Dart中的Future就相当于ES6中的Promise,用法也和Promise相似
Dart代码在单线程中执行
代码在运行线程中阻塞的话,会使程序冻结
Future对象(futures)表示异步操作的结果,进程或者IO会延迟完成
在async函数中使用await来挂起执行,直到future完成为止(或者使用then)
在async函数中使用try-catch来捕获异常(或者使用catchError())
要想同时运行代码,就要为一个web app或者一个worker创建一个isolate
Future
Future 的定义
简单来说,就是我们能够通过它在某个时间点获得异步任务中返回的值。
Future 的常用函数
-
Future.then()
任务执行完成会进入这里,能够获得返回的执行结果。
-
Future.catchError()
有任务执行失败,可以在这里捕获异常。
-
Future.whenComplete()
当任务停止时,最后会执行这里。
-
Future.wait()
可以等待多个异步任务执行完成后,再调用
then()
。只有有一个执行失败,就会进入
catchError()
。 -
Future.delayed()
延迟执行一个延时任务。
-
Future.sync()
同步执行
-
Future.microtask()
创建一个在微任务队列里运行的Future
示例
1
|
import 'dart:async';
|
示例
1
|
import 'dart:async';
|
运行结果
start
同步执行Futuer
end
第一个Future
延迟执行Futuer
async/await
-
当调用一个 async 函数时,会返回一个 Future 对象。
-
async 函数中可能会有 await 表达式,await表达式会使 async 函数暂停执行,直到表达式中的 Future解析完成后继续执行 async中await后面的代码并返回解决结果。
-
await
只能在async
中使用。
示例用户信息的存取
1
|
void saveLoginUser(LoginUser user) async {
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2019-04-23 zookeeper安装教程(zookeeper3.4.5为例)
2019-04-23 centos6.5 常用命令
2019-04-23 centos修改主机名的正确方法
2019-04-23 ZooKeeper的安装与部署