Dart 编程中的 Future 类
Dart 中有许多不同的类和关键字,当我们想要运行异步代码时可以使用它们。**future** 类允许我们运行异步代码,并且可以帮助我们避免回调地狱。**future** 主要表示异步操作的结果。
在 Dart 中,有很多标准库调用会返回一个 future,其中一些是:
http.get
SharedPreference.getInstance()
Dart 中的 future 可以有两种状态:
**已完成** - 当 future 的操作完成并且 future 以一个值或错误完成时。
**未完成** - 当一个函数被调用并且它返回一个 future 时,该函数会排队并返回一个未完成的 future。
语法
Future<T>
在 Dart 中,如果一个 future 不会产生任何可用的值,那么该 future 的类型为 Future<void>。此外,如果函数没有显式地返回值,那么返回类型也是 Future<void>。
示例
让我们考虑一个简单的例子,其中我们声明一个 future,它将以延迟的方式显示一条消息。
Consider the example shown below:
Future<void> printDelayedMessage() {
return Future.delayed(Duration(seconds: 4), () => print('Delayed Output.'));
}
void main() {
printDelayedMessage();
print('First output ...');
}在上面的示例中,我们有一个名为 **printDelayedMessage()** 的函数,它返回一个 void 类型的 future,并且我们有一个 future 使用名为 delayed 的方法,通过该方法我们可以将延迟输出打印到终端。
输出
First output ... Delayed Output.
需要注意的是,输出的第二行将在 4 秒后打印。
Dart 中的 Futures 还允许我们使用 then 方法注册回调。
示例
请考虑以下示例:
void main() {
var userEmailFuture = getUserEmail();
// register callback
userEmailFuture.then((userId) => print(userId));
print('Hello');
}
// method which computes a future
Future<String> getUserEmail() {
// simulate a long network call
return Future.delayed(Duration(seconds: 4), () => "mukul@tutorialspoint.com");
}输出
Hello mukul@tutorialspoint.com
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP