將回撥轉換為期貨
Dart 有一個強大的非同步庫,包括 Future , Stream 等。但是,有時你可能遇到使用回撥而不是 Futures 的非同步 API。為了彌補回撥和期貨之間的差距,Dart 提供了 Completer 類。你可以使用 Completer 將回撥轉換為 Future。
完成程式非常適合使用基於 Future 的 API 橋接基於回撥的 API。例如,假設你的資料庫驅動程式不使用 Futures,但你需要返回 Future。試試這段程式碼:
// A good use of a Completer.
Future doStuff() {
Completer completer = new Completer();
runDatabaseQuery(sql, (results) {
completer.complete(results);
});
return completer.future;
}
如果你使用的 API 已經返回 Future,則無需使用 Completer。