如何:请求 url 并在 rxjs 中用响应压缩它?

How to: request the url and zip it with response in rxjs?

我是这样做的:

let urls = [url1, url2, url3];

let urls_ = Observable
      .from(urls);

let ajax = function() { return promise; };

let results_ = urls_
      .flatMap(ajax)
      .zip(
        urls_,
        (response, url) => {
          return {url, response};
        }
      )

但问题在于 {response, url} 对不匹配,即 url1 与 response1 不匹配。我经常面对这个用例,以至于没有操作符,即在初始 Observable 上做一些异步操作,然后向前传递初始 observable 和异步结果。

RxJS 中是否有用于执行此操作的运算符?否则如何在我的示例中完成 1-1 压缩?

flatMap 有一个 overload 可以为您处理,第二个参数接受一个具有签名

的方法
function resultSelector(outerValue, innerValue, outerIndex, innerIndex)

你这样用

let urls = [url1, url2, url3];

let urls_ = Observable
      .from(urls);

let ajax = function() { return promise; };

let results_ = urls_
      .flatMap(ajax, 
         (url, response) => {
           return {url, response}; 
         })
      )