2016-12-04 1 views
2

Мне нужно получить доступ к «оригинальному» значению потока.Продолжайте отслеживать «оригинальный» элемент в RxJs

Мой случай использования:

  1. Итерация список URL-адресов.
  2. Запросить каждый URL.
  3. обрабатывать ответ, и на этом этапе мне также нужен URL-адрес с первой «итерации».

Пример кода:

const Rx = require('rxjs'); 
const request = require('request'); 

// my request method in Rx version 
const req = Rx.Observable.bindNodeCallback(request); 
const list = [/*list of URLs*/]; 

Rx.Observable.from(list) 
    .flatMap(req) // eq to: .flatMap(url => req(url)) 
    .map(response => { 
     // here I need the response object 
     // and the URL I used to request it (the "original" value). 
    }); 

Любые идеи? :)

ответ

2

FlatMap имеет перегрузку, которая принимает входной сигнал, и каждое полученное значение для вас карты:

.flatMap(
    url => doRequest(url), 
    (url, res) => ({ url, res }) 
) 
+0

вы спасатель :) спасибо! – Ziv