in Bolts/src/bolts/Task.java [315:329]
public Task<Void> continueWhile(final Callable<Boolean> predicate,
final Continuation<Void, Task<Void>> continuation, final Executor executor) {
final Capture<Continuation<Void, Task<Void>>> predicateContinuation =
new Capture<Continuation<Void, Task<Void>>>();
predicateContinuation.set(new Continuation<Void, Task<Void>>() {
public Task<Void> then(Task<Void> task) throws Exception {
if (predicate.call()) {
return Task.<Void> forResult(null).onSuccessTask(continuation, executor)
.onSuccessTask(predicateContinuation.get(), executor);
}
return Task.forResult(null);
}
});
return makeVoid().continueWithTask(predicateContinuation.get(), executor);
}