@@ -234,8 +234,7 @@ Future 内の値が利用可能となることを必要とするため、Future
234
234
235
235
<li ><code >onSuccess</code > や <code >onFailure</code > コールバックを登録することは <code >onComplete</code > と同じ意味論を持つ。ただし、クロージャがそれぞれ成功したか失敗した場合のみに呼ばれるという違いがある。</li >
236
236
237
- <li >既に完了した Future にコールバックを登録することは (1 により) コールバックが eventually に実行されることとなる。
238
- さらに、このコールバックはそれを登録したスレッドの進行をキャンセルしなければ、同じスレッドで同期的に実行される可能性がある。</li >
237
+ <li >既に完了した Future にコールバックを登録することは (1 により) コールバックが eventually に実行されることとなる。</li >
239
238
240
239
<li >Future に複数のコールバックが登録された場合は、それらが実行される順序は定義されない。それどころか、コールバックは並行に実行される可能性がある。しかし、<code >ExecutionContext</code > の実装によっては明確に定義された順序となる可能性もある。</li >
241
240
@@ -421,25 +420,6 @@ Future は同じ `Throwable` とともに失敗する。
421
420
422
421
anyQuote onSuccess { println(_) }
423
422
424
- ` either ` コンビネータはこの Futuere もしくは引数として渡された Future
425
- の結果を持つ新たな Future を作成する。これは結果が成功か失敗したかに関わらず先に完了した方の値が採用される。
426
- 以下は先に返ってきた為替レートを表示する具体例だ:
427
-
428
- val usdQuote = future {
429
- connection.getCurrentValue(USD)
430
- } map {
431
- usd => "値: " + usd + " USD"
432
- }
433
- val chfQuote = future {
434
- connection.getCurrentValue(CHF)
435
- } map {
436
- chf => "値: " + chf + "CHF"
437
- }
438
-
439
- val anyQuote = usdQuote either chfQuote
440
-
441
- anyQuote onSuccess { println(_) }
442
-
443
423
` andThen ` コンビネータは副作用の目的のためだけに用いられる。
444
424
これは、成功したか失敗したかに関わらず現在の Future と全く同一の結果を返す新たな Future を作成する。
445
425
現在の Future が完了すると、` andThen ` に渡された
8000
ロージャが呼び出され、新たな Future
@@ -570,6 +550,8 @@ Future が失敗した場合は、呼び出し元には Future が失敗した
570
550
これらの例外は非同期計算を実行するスレッド内で再び投げられる。
571
551
この理由は、通常クライアント側で処理されないクリティカルもしくは制御フロー関連の例外が伝搬することを回避し、同時に Future の計算が失敗したことをクライアントに通知するためだ。
572
552
553
+ より正確な意味論の説明は [ ` NonFatal ` ] ( http://www.scala-lang.org/api/current/index.html#scala.util.control.NonFatal$ ) を参照。
554
+
573
555
## Promise
574
556
575
557
これまでの所、` future ` メソッドを用いた非同期計算により作成される ` Future ` オブジェクトのみをみてきた。
@@ -725,7 +707,7 @@ for library writers
725
707
2 . 時間の比較 (` < ` 、` <= ` 、` > ` 、および ` >= ` )。
726
708
3 . 算術演算 (` + ` 、` - ` 、` * ` 、` / ` 、および ` unary_- ` )。
727
709
4 . この時間 ` this ` と引数として渡された時間の間の最小値と最大値 (` min ` 、` max ` )。
728
- 5 . 時間が有限かの検査 (` finite_? ` )。
710
+ 5 . 時間が有限かの検査 (` isFinite ` )。
729
711
730
712
` Duration ` は以下の方法で作成することができる:
731
713
@@ -735,7 +717,6 @@ for library writers
735
717
736
718
` Duration ` は ` unapply ` メソッドも提供するため、パータンマッチング構文の中から使うこともできる。以下に具体例をみる:
737
719
738
- import scala.concurrent.Duration
739
720
import scala.concurrent.duration._
740
721
import java.util.concurrent.TimeUnit._
741
722
0 commit comments