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