Size: a a a

Programming Offtop

2020 July 07

AD

Aleksey D. in Programming Offtop
мда, ответ убил...
источник

AD

Aleksey D. in Programming Offtop
так, кажется, я прочитал эту портянку. она сделает то же самое, что мы обсуждали раньше и все, да?

ну, то есть, никакой магии, которая вернет в систему событие, которое повторит не post + get x2, а get x2 нет?
источник

(

( in Programming Offtop
Aleksey D.
так, кажется, я прочитал эту портянку. она сделает то же самое, что мы обсуждали раньше и все, да?

ну, то есть, никакой магии, которая вернет в систему событие, которое повторит не post + get x2, а get x2 нет?
Да ерепейный театр, что тебе нужно сделать? Транзакционное поведение или один только гет два раза повторить?
источник

I

Igor in Programming Offtop
Aleksey D.
так, кажется, я прочитал эту портянку. она сделает то же самое, что мы обсуждали раньше и все, да?

ну, то есть, никакой магии, которая вернет в систему событие, которое повторит не post + get x2, а get x2 нет?
Это все зависит от выбранной монады.
А как сделать нужную написано тут http://okmij.org/ftp/tagless-final/course/lecture.pdf
источник

AN

Alexander Nozik in Programming Offtop
Aleksey D.
так, кажется, я прочитал эту портянку. она сделает то же самое, что мы обсуждали раньше и все, да?

ну, то есть, никакой магии, которая вернет в систему событие, которое повторит не post + get x2, а get x2 нет?
He was told he must first spend five years in contemplation.
After the five years
He was ushered into the Dalai Lama's presence, who said,
'Well, my son, what do you wish to know?'
So the pilgrim said,
'I wish to know the meaning of life, father.'
And the Dalai Lama smiled and said,
'Well my son, life is like a beanstalk, isn't it?'
источник

AD

Aleksey D. in Programming Offtop
(
Да ерепейный театр, что тебе нужно сделать? Транзакционное поведение или один только гет два раза повторить?
вероятно, нужно разделить одну команду на две
вместое Command.SubmitFormDataAndGetCustomerData нужно сделать Command.SubmitFormData и Command.GetCustomerData
в таком случае будет возможность ретраить каждую независимо, но запускать их последовательно
источник

(

( in Programming Offtop
Aleksey D.
вероятно, нужно разделить одну команду на две
вместое Command.SubmitFormDataAndGetCustomerData нужно сделать Command.SubmitFormData и Command.GetCustomerData
в таком случае будет возможность ретраить каждую независимо, но запускать их последовательно
Так ркс как раз это и умеет делать
источник

(

( in Programming Offtop
val submitFormData: Single<...> = ...
val getCustomerData: Single<...> = (...).retry(3)
combineSomehow(submitFormData, getCustomerData)
источник

AD

Aleksey D. in Programming Offtop
(
val submitFormData: Single<...> = ...
val getCustomerData: Single<...> = (...).retry(3)
combineSomehow(submitFormData, getCustomerData)
да, потом я пользователю показыва «чет пошло не так» и он пошел повторять все запросы, даже если POST норм отработал)
источник

(

( in Programming Offtop
Aleksey D.
да, потом я пользователю показыва «чет пошло не так» и он пошел повторять все запросы, даже если POST норм отработал)
Ну тогда тут либо к бекендеру идти, либо дать пользователю понять, что данные отправились, но не вернулись
источник

AD

Aleksey D. in Programming Offtop
(
val submitFormData: Single<...> = ...
val getCustomerData: Single<...> = (...).retry(3)
combineSomehow(submitFormData, getCustomerData)
тип идея в том, чтобы как-то логически разделить вызов двух синглов из твоего примера и в случае нажатия кнопки идти повторять только второй сингл
источник

(

( in Programming Offtop
а, дошло
источник

(

( in Programming Offtop
Aleksey D.
тип идея в том, чтобы как-то логически разделить вызов двух синглов из твоего примера и в случае нажатия кнопки идти повторять только второй сингл
Синглы же ленивые, выдери цепочку на получение данных, засунь её туда и туда
источник

AD

Aleksey D. in Programming Offtop
val post = Submit -> SubmitSuccess | SubmitFailure
val gets = Fetch(SubmitSuccess) -> FetchSuccess | FetchFailure(SubmitSuccess)

в таком случае можно из события FetchFailure выдрать необходимые параметры и повторить в любое время Fetch(SubmitSuccess)
источник

AD

Aleksey D. in Programming Offtop
(
Синглы же ленивые, выдери цепочку на получение данных, засунь её туда и туда
в моем кейсе придется по событию на каждую развилку добавлять - думал, можно и этого как-то избежать
источник

Kd

Konstantin dmz9 in Programming Offtop
можно такой костыль написать
val storage = ReadWriteStorage()
return Single.fromCallable{ storage.read() }
.onErrorReturn { api.post }
.doOnSuccess { storage.write(it) }
.flatMap( Single.zip ( api.get1, api.get2, it) )
.doOnSuccess { storage.write (null) }
чет типа того, используешь промежуточную хранилку чтобы туда засовывать результат пост запроса если он будет вообще.
а если не будет - получается сингл будет с ошибкой, но ошибка в onErrorReturn (там какой то другой оператор) будет заменена на реальный пост запрос в случае когда его еще не делали
и если пост ОК - тогда в хранилище будет результат.
дальше если у тебя завершаются успешно два гет запроса - обнуляй опять хранилище, а если нет, то в следующий раз данные возьмутся оттуда и пост дважды не пойдет
источник

(

( in Programming Offtop
Andrew Mikhaylov
С подключением
До меня только сейчас дошло, почему ты написал "с подключением"
Проблема в том, что там

fun mda(vararg ints: Int) { ... }

val heh: Array<Int> = ...
mda (*heh)
источник

I

Igor in Programming Offtop
лол
источник

AM

Andrew Mikhaylov in Programming Offtop
(
До меня только сейчас дошло, почему ты написал "с подключением"
Проблема в том, что там

fun mda(vararg ints: Int) { ... }

val heh: Array<Int> = ...
mda (*heh)
А, вот как. Неприятненько.
источник

I

Ilmir in Programming Offtop
источник