У меня есть массив наблюдаемых, который был создан в цикле. А затем объединить все эти наблюдаемые с помощью merge
и подписаться на объединенные наблюдаемые. Я не мог найти способ получить контекст наблюдаемого, где он был создан (в цикле). Вот кодRxjs связывает контекст места, где наблюдаемый был создан
let observable = Rx.Observable.bindNodeCallback(request);
let streams = _(['a', 'b', 'c', 'd'])
.someMoreLodashStuff()
.map(val => {
// HERE SOMEHOW I WANT TO BIND CONTEXT (e.g. loop val),
// SO THAT SUBSCRIBER CAN KNOW THE EXACT LOOP STATE
// WHEN RECEIVING RESULT
return observable(mutate(val))
})
.value();
Rx.Observable
.merge(...streams)
.subscribe(
(res) => {
// HERE I WANT TO GET CONTEXT (e.g. val)
}, (err) => {
// HERE I WANT TO GET CONTEXT (e.g. val)
},
() => {
//on complete stuff
});
Update (как спросил @martin)
С @martin спросил о цели этого связывания и что проблема, которую я пытаюсь решить, так что я буду описывать реальную проблему.
ческий и реальная проблема
Я пытаюсь сканировать список веб-сайтов (передается как параметры запроса), принеси их названия и сделать их в HTML и вернуть HTML обратно пользователю. Это часть моего open source repo, где решена эта точная проблема с помощью callbacks node.js, async.js водопада и обещаний. Теперь решая его с помощью rxjs. Это просто способ изучить различные асинхронные методы. Это file from github repo, где с помощью rxjs решить эту проблему
Вы можете вернуть 'this' из первой карты(). Я не понимаю, что это должно делать или какая проблема вы пытаетесь решить. Почему подписчик знает контекст, используемый где-то из оператора map()? – martin
@martin обновил вопрос. Думаю, теперь вы можете лучше понять реальную проблему. И вы можете видеть, что возвращение 'this' с первой« карты »приведет к сбою' Rx.Observable.merge() ', поскольку оно ожидает Observables. – hhsadiq
Я также отметил вас в github (@martinsik) в точной строке в файле, где я хочу привязку. Надеюсь, это может дать вам лучший ответ на ваш вопрос. – hhsadiq