[Dart]Futureを返す関数
Dartで標準で用意されているメソッドはFutureを返すものがある。
これは遅延を伴う処理を、無駄なく行うための重要な機構だ。
というわけで自分のメソッドもFutureを返すようにしたいのだが、
そのやり方は下記の通り。
これはhttpでデータを取得するサンプルだ。
Completerオブジェクトを使用するのがミソ。
っていうか、それしかないが。
正常終了の結果はcompleteメソッドで通知。
エラーは、completeErrorメソッドを使用して通知。サンプルでは元の処理でThrowされているものをそのまま転送している。
ちなみに、Completerが使えるのは一回こっきりだ。使い回しはできない。
Futureの使い方
http://www.dartlang.org/articles/using-future-based-apis/
Futureのエラーハンドリング方法
http://www.dartlang.org/articles/futures-and-error-handling/
これは遅延を伴う処理を、無駄なく行うための重要な機構だ。
というわけで自分のメソッドもFutureを返すようにしたいのだが、
そのやり方は下記の通り。
Future<chartdata> httpAccessTest() {
Completer comp = new Completer();
HttpRequest.request("http://..../xxx")
.then( (HttpRequest req) {
// 成功した時
comp.complete(req.responseText);
})
.catchError( (e) => comp.completeError(e) ); // 失敗した時
return comp.future;
}
これはhttpでデータを取得するサンプルだ。
Completerオブジェクトを使用するのがミソ。
っていうか、それしかないが。
正常終了の結果はcompleteメソッドで通知。
エラーは、completeErrorメソッドを使用して通知。サンプルでは元の処理でThrowされているものをそのまま転送している。
ちなみに、Completerが使えるのは一回こっきりだ。使い回しはできない。
Futureの使い方
http://www.dartlang.org/articles/using-future-based-apis/
Futureのエラーハンドリング方法
http://www.dartlang.org/articles/futures-and-error-handling/
コメント
コメントを投稿