@Override public void run() { Observable.just(1, 2).finallyDo(new Action0() { @Override public void call() { log("finallyDo"); } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { log(integer); } }); } });
/** * Add a callback for when the promise is either fulfilled or rejected. This callback cannot be unsubscribed. */ public Promise<T> onFinally(Action0 finallyDo) { return new Promise<T>(this.observable.finallyDo(finallyDo)); }
.finallyDo(() -> { timing.end(); if (stats != null)
requestBuiltObs.finallyDo(() -> readTiming.end() );
protected Observable<HttpClientResponse<O>> submit(final HttpClientRequest<I> request, final Observable<ObservableConnection<HttpClientResponse<O>, HttpClientRequest<I>>> connectionObservable, final ClientConfig config) { final long startTimeMillis = Clock.newStartTimeMillis(); HttpClientConfig httpClientConfig; if (config instanceof HttpClientConfig) { httpClientConfig = (HttpClientConfig) config; } else { httpClientConfig = new HttpClientConfig(config); } boolean followRedirect = shouldFollowRedirectForRequest(httpClientConfig, request); enrichRequest(request, httpClientConfig); Observable<HttpClientResponse<O>> toReturn = connectionObservable.lift(new RequestProcessingOperator<I, O>(request, eventsSubject, httpClientConfig.getResponseSubscriptionTimeoutMs())); if (followRedirect) { toReturn = toReturn.lift(new RedirectOperator<I, O>(request, this, httpClientConfig)); } return toReturn.take(1).finallyDo(new Action0() { @Override public void call() { eventsSubject.onEvent(HttpClientMetricsEvent.REQUEST_PROCESSING_COMPLETE, Clock.onEndMillis(startTimeMillis)); } }); }
protected Observable<HttpClientResponse<O>> submit(final HttpClientRequest<I> request, final Observable<ObservableConnection<HttpClientResponse<O>, HttpClientRequest<I>>> connectionObservable, final ClientConfig config) { final long startTimeMillis = Clock.newStartTimeMillis(); HttpClientConfig httpClientConfig; if (config instanceof HttpClientConfig) { httpClientConfig = (HttpClientConfig) config; } else { httpClientConfig = new HttpClientConfig(config); } boolean followRedirect = shouldFollowRedirectForRequest(httpClientConfig, request); enrichRequest(request, httpClientConfig); Observable<HttpClientResponse<O>> toReturn = connectionObservable.lift(new RequestProcessingOperator<I, O>(request, eventsSubject, httpClientConfig.getResponseSubscriptionTimeoutMs())); if (followRedirect) { toReturn = toReturn.lift(new RedirectOperator<I, O>(request, this, httpClientConfig)); } return toReturn.take(1).finallyDo(new Action0() { @Override public void call() { eventsSubject.onEvent(HttpClientMetricsEvent.REQUEST_PROCESSING_COMPLETE, Clock.onEndMillis(startTimeMillis)); } }); }