public static void after(final PromiseListener<?> listener, final Promise<?>... promises) {
    final SettablePromise<Object> afterPromise = Promises.settable();
    final PromiseListener<Object> countDownListener =
        new CountDownPromiseListener<Object>(promises.length, afterPromise, null);

    for (Promise<?> promise : promises) {
      unwildcardPromise(promise).addListener(countDownListener);
    }

    afterPromise.addListener(unwildcardListener(listener));
  }
public static void after(final PromiseListener<?> listener, final Promise<?>... promises) {
    final SettablePromise<Object> afterPromise = Promises.settable();
    final PromiseListener<Object> countDownListener =
        new CountDownPromiseListener<Object>(promises.length, afterPromise, null);

    for (Promise<?> promise : promises) {
      unwildcardPromise(promise).addListener(countDownListener);
    }

    afterPromise.addListener(unwildcardListener(listener));
  }
public static void after ( final PromiseListener < ? > listener , final Promise < ? > ... promises ) { final SettablePromise < Object > afterPromise = Promises . settable ( ) ; final PromiseListener < Object > countDownListener = new CountDownPromiseListener < Object > ( promises . length , afterPromise , null ) ; for ( Promise < ? > promise : promises ) { unwildcardPromise ( promise ) . addListener ( countDownListener ) ; } afterPromise . addListener ( unwildcardListener ( listener ) ) ; }
Invokes the {@code listener} once all given {@code promises} have been resolved.

@param listener the listener to invoke when the promises have finished.
@param promises the set of promises that must be resolved

@see com.linkedin.parseq.promise.PromiseListener
Invokes the { @code listener } once all given { @code promises } have been resolved .