javascript - 如何: request the url and zip it with response in rxjs?

标签 javascript reactive-programming 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}; 
         })
      )

关于javascript - 如何: request the url and zip it with response in rxjs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678887/

相关文章:

javascript - 拆分所有未转义的分号

javascript - HTML 文本区域不会自动调整大小

javascript - 在 R Shiny 中触发 react 流的键盘快捷键?

java - RxJava Observable 在第一次发射时收到通知

javascript - ColdFusion 的 listFindNoCase 函数在 Javascript 中最快的实现是什么?

javascript - node.js 和 express 中的事件菜单项

java - 谓词过滤器 rxjava2 - 如何传递动态过滤器参数

javascript - 为每个订阅在扫描运算符上创建一个新的种子对象

javascript - 在浏览器中导入 RxJS 6?

javascript - 重用数据流一段时间