BackpressureStrategy.DROP não está funcionando como eu esperava

Iuq281

Vamos supor que eu tenha uma atividade mostrando as postagens RecyclerViewdentro e dentro dessa atividade, há um botão de atualização.

Quando o usuário clicou no botão de atualização eu vou me conectar com o servidor para receber as postagens novamente.

Vamos supor que o usuário clicou no botão de atualização e durante a tentativa de obter as postagens do servidor, o usuário clicou no botão de atualização novamente 16 vezes, isso fará com que se conecte com o servidor 17 vezes.

Tentei resolver esse problema usando BackpressureStrategy.DROPinside repeatWhenmas BackpressureStrategy.DROPnão cai as conexões durante a obtenção dos posts do servidor.

PublishSubject<String> retrySubject = PublishSubject.create();
PublishSubject<String> repeatSubject = PublishSubject.create();

new Retrofit.Builder()
        .baseUrl("...")
        .addCallAdapterFactory(RxJava3CallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .build()
        .create(API.class)
        .getPosts()
        .repeatWhen(objectFlowable -> objectFlowable.zipWith(repeatSubject.toFlowable(BackpressureStrategy.DROP), (o, s) -> s))
        .retryWhen(throwableFlowable -> throwableFlowable.zipWith(retrySubject.toFlowable(BackpressureStrategy.DROP), (throwable, s) -> s))
        .subscribe();

//repeatSubject.onNext("") inside refresh button
//retrySubject.onNext("") inside retry button
akarnokd

zipWithtem um valor de pré-busca padrão de 128 e um mínimo de 1 para que sempre haja uma repetição a ser acionada.

Se você quiser que o assunto seja considerado apenas quando a sequência interna estiver pronta para repetir/repetir, use flatMap:

.repeatWhen(f -> 
    f.flatMap(e -> repeatSubject
                   .toFlowable(BackpressureStrategy.DROP)
                   .take(1)
    )
)

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

A regressão linear não está funcionando como eu esperava

Polly CircuitBreakerAsync não está funcionando como eu esperava

GotoXY não está funcionando como eu esperava

Meu código não está funcionando como eu esperava

getrusage não está funcionando como eu esperava

Angular FormArray não está funcionando como eu esperava

por que dropna () não está funcionando como eu esperava?

TrimRight não está funcionando como eu esperava

Quantificador lento {,}? não está funcionando como eu esperava

Meu código não está funcionando como eu esperava

getrusage não está funcionando como eu esperava

Regex positivo lookahead não está funcionando como eu esperava

FROM ... AS no Dockerfile não está funcionando como eu esperava

Async não está funcionando como eu esperava

Não está e não está funcionando como eu esperava

A função Max Val não está funcionando como eu esperava

A função sql - sum () não está funcionando como eu esperava

Por que a função XPath last () não está funcionando como eu esperava?

onChange na reação não está funcionando como eu esperava

O método JavaScript setInterval () não está funcionando como eu esperava

imap () não está funcionando como eu esperava, o que estou perdendo?

Delphi 7 Dunit checks após StopExpectingException não estão funcionando como eu esperava

OpenCL, problema com tipos de vetor: o produto vetorial não está funcionando como eu esperava

Lodash fp (programação funcional) reduz não está funcionando como eu esperava que funcionasse

O eixo anterior do XPath não está funcionando como eu esperava

A propriedade de tamanhos não está funcionando como eu esperava para o elemento de origem

MessageConverter personalizado com Spring JmsMessagingTemplate não está funcionando como eu esperava

Classificar uma matriz de estrutura não está funcionando como eu esperava

Reload embutido () do módulo modificado não está funcionando como eu esperava