Как работает оператор RxJs 5 share ()?

Это не на 100% ясно для меня, как RxJs 5share() оператор работает, см. здесьпоследние документы, Jsbin за вопросВот.

Если я создаю наблюдаемую с серией от 0 до 2, каждое значение отделяется на одну секунду:

var source = Rx.Observable.interval(1000)
.take(5)
.do(function (x) {
    console.log('some side effect');
});

И если я создам двух подписчиков на эту заметку:

source.subscribe((n) => console.log("subscriptor 1 = " + n));
source.subscribe((n) => console.log("subscriptor 2 = " + n));

Я получаю это в консоли:

"some side effect ..."
"subscriptor 1 = 0"
"some side effect ..."
"subscriptor 2 = 0"
"some side effect ..."
"subscriptor 1 = 1"
"some side effect ..."
"subscriptor 2 = 1"
"some side effect ..."
"subscriptor 1 = 2"
"some side effect ..."
"subscriptor 2 = 2"

Я думал, что каждая подписка будет подписываться на одну и ту же Observable, но, похоже, это не так! Это как акт подписки создает совершенно отдельный Observable!

Но еслиshare() Оператор добавлен в источник наблюдаемого:

var source = Rx.Observable.interval(1000)
.take(3)
.do(function (x) {
    console.log('some side effect ...');
})
.share();

Тогда мы получаем это:

"some side effect ..."
"subscriptor 1 = 0"
"subscriptor 2 = 0"
"some side effect ..."
"subscriptor 1 = 1"
"subscriptor 2 = 1"
"some side effect ..."
"subscriptor 1 = 2"
"subscriptor 2 = 2"

Что я и ожидал безshare().

Что здесь происходит, какshare()оператор работает? Создает ли каждая подписка новую цепочку наблюдаемых?

Ответы на вопрос(2)

Ваш ответ на вопрос