将来自N个异步服务调用的响应合并为您的客户端的1个响应

时间:2013-12-23 00:57:21

标签: android android-event

我目前正在做一些Android应用开发。我是事件驱动编程的新手。所以这可能是一个新手问题。想象一下以下逻辑:

class A {
    function1() {
        call function2(new Callback())
    }

    class Callback implements OnFunction2Done {
        @Override
        onFunction2Done() {

        }
    }
}

class B {
    function2(Callback callback) {
        foreach item 1 - n {
            // call external service which responds via async callback
        }
    }
}

本质上,function1在另一个类中调用function2。作为调用的一部分,它还为函数2完成所有工作后调用的回调例程提供了一个句柄。问题是function2本身正在进行N个异步服务调用。确保仅在for循环(函数2内部)中的所有异步服务调用完全完成后调用回调例程(onFunction2Done())的最佳方法是什么?如果在你推荐的解决方案中,onFunction2Done()可以整合来自function2的“n”响应(每次循环一次),也可以。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我的(可能是天真的)解决方案,假设您总是从外部服务获得某种响应(或错误回调):

class B {
  int counter;
  function2(Callback callback) {
    counter = n;
    foreach item 1 - n {
        //send stuff to external service, service responds in onResponseOrError
    }
   }
 onResponseOrError()  {
   --counter;
   if (counter == 0)
      callback.onFunction2Done();
 }
}