私のシナリオは、複数のAPIコールを作成する必要があり、それぞれに以前のコールのデータを使用する必要があります。SCALA:将来のコールバック内で将来コールバックを開始する方法
ここでは、将来のAPI呼び出しを行い、最初の呼び出しの応答を返すとします。最初の呼び出しの完了時に次のAPIを呼び出すことができません。
私のシナリオは、複数のAPIコールを作成する必要があり、それぞれに以前のコールのデータを使用する必要があります。SCALA:将来のコールバック内で将来コールバックを開始する方法
ここでは、将来のAPI呼び出しを行い、最初の呼び出しの応答を返すとします。最初の呼び出しの完了時に次のAPIを呼び出すことができません。
あなたがfor yield
構文を使用することである、flatMap
や先物のの束を配列決定にクリーンな代替手段を使用することができflatMap機能
def firstApiCall(): Future[FirstRes]
def secondApiCall(firstRes: FirstRes): Future[SecondRes]
def combinedCall()(implicit ec: ExecutionContext): Future[SecondRes] = firstApiCall.flatMap(res => secondApiCall(res))
これは私の質問に答えるが、firstApiCALLとsecondAPICallを使用して、同じ関数呼び出しを使用してAPIを処理できますか? –
私はこの質問を正確に理解していませんが、これが答えるなら、好きなだけ多くのflatMap呼び出しを組み合わせることができます。 – mavarazy
で先物をリンクすることができます。それは、内部的にはflatMap
とmap
とwithFilter
メソッド呼び出しに変換される時間の砂糖をコンパイルするだけですが、一般にはより洗練されて読みやすくなります。
import scala.concurrent.ExecutionContext.Implicits.global
for {
first <- firstApiCall()
second <- secondApiCall(first)
} yield second
コードを共有できますか? – emaillenin