У меня есть соединяемый наблюдаемым, что будет присоединяться, когда другой поток выполняется:Почему соединяемый наблюдаемым получить выполнить только один раз
const source1 = Rx.Observable.of([1,2,3,4,5])
.do(() => console.log('Do Something!'))
.map(() => "Always connected.")
.publish();
source1.subscribe((v) => console.log(v));
const connect =() => {
let c = false;
return() => {
if (!c) {
console.log("Get connected");
source1.connect();
c = true;
}
}
}
const source2 = Rx.Observable.fromEvent(document, 'click')
.do(() => console.log("execute!"))
.do(connect())
.switchMapTo(source1);
source2.subscribe((v) => console.log(v));
Вывод,
"execute!"
"Get connected"
"Do Something!"
"Always connected."
Дальнейшие клики по документу source1
будет не подписываться больше, и мой вопрос, почему?
Есть ли у вас какие-либо предлагаемые решения? Конечно, это общая картина, где вы хотите выполнить наблюдаемым несколько раз.Я пытаюсь реализовать что-то подобное с RxSwift, где у меня есть подключаемый наблюдаемый, который обертывает сетевой запрос. Если сетевой запрос завершается неудачно, то я хотел бы иметь возможность повторно подключиться ... –