在 RxJs 中继续跟踪 "original" 项

Keep tracking "original" item in RxJs

我需要访问流的 "original" 值。

我的用例:

  1. URL 的迭代列表。
  2. 请求每个URL。
  3. 处理响应,此时,我还需要第一个"iteration"的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).
    });

有什么想法吗? :)

FlatMap 有一个重载,它接受输入和每个生成的值供您映射:

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