1

我正在学习 CycleJS,我看到在使用 Cycle 的 HTTP 驱动程序时,我必须合并response stream stream使用 RxJSswitch/mergeAll才能到达流级别。但是当我尝试应用这些函数时,我收到了一个类型错误:(switch is not a function在响应流上)。

  const response$$ = sources.HTTP
            .filter(response$ => response$.request.url === 'http://jsonplaceholder.typicode.com/users/1')
  const response$ = response$$.switch()

如果我遗漏了什么,你能告诉我吗?

4

2 回答 2

2

@ cycle /httpfilter返回一个,因此它没有的功能。

要获得一个,在你之后,使用从生成的元流中提取流filter然后它:response$$response$$flatten

const response$$ = sources.HTTP
  .filter(response$ => response$.request.url === 'http://jsonplaceholder.typicode.com/users/1')
  .response$$
const response$ = response$$.flatten()

现在你可以继续使用map,等等。(可用的操作符取决于你使用的Cycle.js的版本。最新的使用xstream作为它的引擎。)

@循环/httpresponse$$

使用 HTTP 源,您还可以使用httpSource.response$$来获取元流。您应该在使用元流之前将其展平,然后生成的响应流将发出通过 superagent 接收到的响应对象。


或者,您可以简单地:

const response$ = sources.HTTP
  .filter(response$ => response$.request.url === 'http://jsonplaceholder.typicode.com/users/1')
  .response$$.flatten()

现在您可以response$按预期使用。

于 2016-07-03T13:01:25.160 回答
0

switch是一个 RxJS 操作符,它在 xstream 中的类似物是flatten. 流引擎取决于*-run您从哪个包导入run函数。例如,如果你这样做import {run} from 'rx-run',来自驱动程序的所有源流都将带有稳定的 RxJS 4 接口。

所有这些多流引擎的东西都是相当新的,是在最新版本中引入的。您可以考虑阅读迁移指南

于 2016-07-18T13:42:16.460 回答