Die andThen
Bedeutung, die ich von dieser answer gelernt habe, ist eine Funktion Composer.Warum verkettet das andThen of Future nicht das Ergebnis?
Sagen Sie, dass
f andThen g andThen h
zu
h(g(f(x)))
gleich wird dies der h function
Eingang erhalten impliziert von g(f(x))
Aber für die andThen
in Future
, alle die Schließung der folgenden andthen erhält immer das Ergebnis vom Original Future
.
Future{
1
}.andThen{ case Success(x) =>
println(x) // print 1
Thread.sleep(2000)
x * 2
}.andThen{ case Success(x) =>
println(x) // print 1
Thread.sleep(2000)
x * 2
}
vergleichen zu
val func: Function1[Int, Int] = { x: Int =>
x
}.andThen { y =>
println(y) // print 1
y * 2
}.andThen { z =>
println(z) // print 2
z * 2
}
func(1)
Was ist der Grund Zukunft zu machen :: andthen (n) von den ursprünglichen Zukunft all das gleiche Ergebnis erhält stattdessen Zukunft des Verkettungs? Ich habe beobachtet, dass diese verkettet und dann sequentiell ausgeführt werden, so dass der Grund nicht für parallele Zwecke sein kann.
Kann ich sagen, es ist eine andere Version von onComplete aber gibt "this" zurück, so dass es mehrere "Beobachter" Callback-Handler im Verkettungsstil binden kann? –
@ChenOT Ja. So ziemlich – Odomontois
@ Aber mit einem Unterschied. Ich füge das zu asnwer – Odomontois