1

我有一个rxjs.observable(rxjs 版本 6.2.1)返回urls我需要向其发出GET请求。

var subscription = urlObservable$.subscribe(
  function (url) {
    console.log('new URL: ' + url);
    processURL(url)
  },
  function (err) { console.log('Error: ' + err); },
  function () { console.log('Completed'); }
);

对于每一个url我需要通过函数发出请求processURL(url)。根据反应哲学,处理所有这些传入的 url 并逐个发出请求而不是在subscribe发出数据后立即触发所有请求的正确方法是什么?请注意,在这种情况下,observableurlObservable$返回数据的速度将比需要使用返回的url.

processURL可以返回一个promise.

谢谢。

4

1 回答 1

2

如果urlObservable$只发出字符串,你可以简单地使用concatMap它,它总是等到前一个 Observable 完成:

urlObservable$
  .pipe(
    concatMap(url => processURL(url)),
  )
  .subscribe(...);

即使processURL返回 Promise,这也会起作用。

于 2018-06-13T13:51:32.647 回答