私は、外部APIのA呼んで状況を持っているとAPI Bの要求に供給し、それを呼び出すと、その後スレッドをブロックしてvert.xでの応答を待つ方法は?
method(){
response = call API A
}
method_for_API_A(){
handler() ->{
API_B
}
return response;
}
method_for_API_B(){
//code to call API B
}
私は以下のようなAPIのA.何かの呼び出し元に応答を返すためにその応答を使用しますここに向いているのはAPIです。メソッドはBからの応答を待たずに応答を返しています。
私はvert.xのexecuteBlockingメソッドについてチェックしましたが、 'blocking queue'を使用しようとしましたが、行う。 誰かがそれをやり遂げる正しい方法を教えてもらえますか?事前に感謝します。
編集:ただ、私は、Javaでフレームワークを使用していますvert.x
Class MyClass{
public Response method_A (Request request){
String respFromApiA = Call_API_A(request) ; // STEP 1
Response respFromApiB = Call_API_B(request, respFromApiA); // STEP 2
Print(respFromApiB) // PRINT FINAL Response
return respFromApiB; // STEP 3
}
String Call_API_A(Request request){
// Implementation
Print(string); // PRINT API A response
return string
}
Response Call_API_B(Response response){
// Implementation
Print(response); // PRINT API B response
return response;
}
}
正確なシナリオを説明します。 実行中に何が起こるかは、STEP 1に進み、API Aコールを開始します。 (respFromApiAを待つことなく)ステップ2に進み、API B(respFromApiAがNULLなので最終的に失敗する)を呼び出します。最後に流れはSTEP 3に進み、ここから戻ります。 (API AとAPI Bの結果を待たずに)。 我々は、プリント注文が表示されている場合、それは私が達成しようとしていますこれは何
PRINT FINAL Response
PRINT API A response
PRINT API B response
のようなものでしょうか?
Wait for API A response.
Make call to API B. Wait for API B response.
Return response got from API B.
今回は明確にできることを願っています。追加の入力が必要な場合はお知らせください。
あなたは両方のコールをしないのはなぜ'メソッド'の中で順番に? – Fildor
ノンブロッキングコールをやっていると思います。彼らはコールバックで回答を返す可能性が最も高いです(私はvert.xを知らない、申し訳ありません)。したがって、それらの呼び出しをブロックし、結果を返すか、コールバックを使用する必要があるかをVert.xに伝える可能性を見つける必要があります。 – Fildor
多分もっと多くのコード(実際のコード)を示したら、vert.xでの経験を持つ人が助けてくれるかもしれません... – Fildor