Dart 中有不同的类和关键字,当我们想要运行异步代码时可以使用它们。在未来的 类允许我们运行异步代码,我们也能避免与它的帮助下回调地狱。甲将来 主要表示异步操作的结果。
在 Dart 中,有许多返回未来的标准库调用,其中一些是 -
获取
SharedPreference.getInstance()
Dart 的未来可以有两种状态,它们是 -
Completed - 当 future 的操作完成并且 future 以值或错误完成时。
未完成 - 当一个函数被调用并返回一个未来时,该函数排队并返回一个未完成的未来。
Future<T>
在 Dart 中,如果 Future 不产生任何可用的值,则 Future 的类型是 Future<void>。此外,如果函数没有明确返回任何值,则返回类型也是 Future<void>。
让我们考虑一个小例子,我们声明了一个以延迟方式显示消息的未来。
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 类型的未来,我们有一个使用名为延迟的方法的未来,通过它我们能够将延迟输出打印到终端。
输出结果
First output ... Delayed Output.
应该注意的是,输出的第二行将在 4 秒后打印出来。
Dart 中的 Futures 还允许我们在 then 方法的帮助下注册回调。
考虑下面显示的示例 -
void main() { var userEmailFuture = getUserEmail(); // 注册回调 userEmailFuture.then((userId) => print(userId)); print('Hello'); } // 计算未来的方法 Future<String> getUserEmail() { // 模拟长时间的网络通话 return Future.delayed(Duration(seconds: 4), () => "mukul@nhooo.com"); }输出结果
Hello mukul@nhooo.com