我有这样的情况:我调用一个外部API A,并使用其响应来发送请求到API B并调用它,然后将响应返回给API A的调用者。就像下面这样:
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方法在未等待来自B的响应即返回了响应。
我查看了vert.x的executeBlocking方法,还尝试使用“阻塞队列”,但无法达到预期的效果。请问是否有人能指导我正确的做法。先谢谢了。
编辑:为了解释具体情况。
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;
}
}
我正在使用Java的vert.x框架。 在执行过程中,流程到达STEP 1,启动API A调用。然后转到STEP 2(不等待'respFromApiA'),并调用API B(由于'respFromApiA'为空而最终失败)。最后,流程到达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.
我希望这次我能让您明白。如果您需要更多的输入,请告诉我。