Warum tut das dann der Zukunft nicht Kette das Ergebnis?

Den andThen Bedeutung, die ich gelernt, aus dieser Antwort ist eine Funktion Komponist.

Sagen, dass

f andThen g andThen h

wird gleich

h(g(f(x)))

Dies impliziert die h function erhalten input von g(f(x))

Aber für die andThen im Future alle die Schließung der folgenden dann erhält immer das Ergebnis von der ursprünglichen 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, um

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 der Zukunft::dann(s), alle erhalten das gleiche Ergebnis von der ursprünglichen Zukunft anstelle der Verkettung Zukunft? Ich habe festgestellt, dass diese verkettete dann sequentiell abgearbeitet werden, so kann der Grund nicht sein für parallel Zweck.

InformationsquelleAutor Chen OT | 2015-06-05
Schreibe einen Kommentar