public static <T> Promise<List<T>> waitAll(Promise<T>... promises) { return waitAll(Arrays.asList(promises)); }
public static <A, B, C, D> Promise<F.T4<A, B, C, D>> wait4(Promise<A> tA, Promise<B> tB, Promise<C> tC, Promise<D> tD) { final Promise<F.T4<A, B, C, D>> result = new Promise<>(); Promise<List<Object>> t = waitAll(new Promise[]{tA, tB, tC, tD}); t.onRedeem(new F.Action<Promise<List<Object>>>() { @Override public void invoke(Promise<List<Object>> completed) { List<Object> values = completed.getOrNull(); if(values != null) { result.invoke(new F.T4((A) values.get(0), (B) values.get(1), (C) values.get(2), (D) values.get(3))); } else { result.invokeWithException(completed.exception); } } }); return result; }
public static <A, B> Promise<F.Tuple<A, B>> wait2(Promise<A> tA, Promise<B> tB) { final Promise<F.Tuple<A, B>> result = new Promise<>(); Promise<List<Object>> t = waitAll(new Promise[]{tA, tB}); t.onRedeem(new F.Action<Promise<List<Object>>>() { @Override public void invoke(Promise<List<Object>> completed) { List<Object> values = completed.getOrNull(); if(values != null) { result.invoke(new F.Tuple((A) values.get(0), (B) values.get(1))); } else { result.invokeWithException(completed.exception); } } }); return result; }
public static <A, B, C, D, E> Promise<F.T5<A, B, C, D, E>> wait5(Promise<A> tA, Promise<B> tB, Promise<C> tC, Promise<D> tD, Promise<E> tE) { final Promise<F.T5<A, B, C, D, E>> result = new Promise<>(); Promise<List<Object>> t = waitAll(new Promise[]{tA, tB, tC, tD, tE}); t.onRedeem(new F.Action<Promise<List<Object>>>() { @Override public void invoke(Promise<List<Object>> completed) { List<Object> values = completed.getOrNull(); if(values != null) { result.invoke(new F.T5((A) values.get(0), (B) values.get(1), (C) values.get(2), (D) values.get(3), (E) values.get(4))); } else { result.invokeWithException(completed.exception); } } }); return result; }
public static <A, B, C> Promise<F.T3<A, B, C>> wait3(Promise<A> tA, Promise<B> tB, Promise<C> tC) { final Promise<F.T3<A, B, C>> result = new Promise<>(); Promise<List<Object>> t = waitAll(new Promise[]{tA, tB, tC}); t.onRedeem(new F.Action<Promise<List<Object>>>() { @Override public void invoke(Promise<List<Object>> completed) { List<Object> values = completed.getOrNull(); if(values != null) { result.invoke(new F.T3((A) values.get(0), (B) values.get(1), (C) values.get(2))); } else { result.invokeWithException(completed.exception); } } }); return result; }