complete
Future
とすることはできません。
Future
は計算であり、この計算(一度開始)は完了すると完了します。あなたはそれを作成した後でそれを制御することはできません。 onComplete
コールバックを割り当てることができます。このコールバックは、この未来が完了した時点で解雇されますが、その時点では制御できません。
Future
を制御したい場合はPromise
Future
のような政治家ができます。あなたが成功したか失敗したかで将来を完了するかどうかは、あなた次第です。
// lets promise an Int
val promise = Promise[Int]()
// Now... we also have a future associated with this promise
val future = promise.Future
// assign a callback which will be called when future completes
future.onComplete(
case Success(i) => println("Future complete :: " + i)
case Failure(ex) => println("Future failed :: " + ex.toString)
)
// Future by itself provides you no way to complete it
// if you want to complete this future, you can fulfil your promise
promise.complete(10)
すてきな説明のおかげで、私は 'future'を手作業で手動で完成させるべきですか? – Shankar
@Shankarたとえば、コールバックのみをサポートするサードパーティのライブラリと統合する場合。 –
'Future.apply(expr)'は 'Future.unit.map(_ => expr)'の構文砂糖です。 –