我正在学习CycleJS,我发现在使用Cycle的HTTP驱动程序时,我必须使用RxJS response stream stream
合并switch/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()
如果我遗失了什么,请你告诉我吗?
答案 0 :(得分:2)
@cycle/http filter
会返回元信息,因此它不具备流的功能。
要获取流,在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来使用httpSource.response$$
&#39}。 s stream 引擎。)
@ cycle / http response$$
使用HTTP源,您还可以使用
const response$ = sources.HTTP .filter(response$ => response$.request.url === 'http://jsonplaceholder.typicode.com/users/1') .response$$.flatten()
来获取 元流。你应该在消耗之前弄平元流, 然后生成的响应流将发出响应对象 通过superagent收到。
或者你可以简单地说:
response$
现在您可以按预期使用{{1}}。
答案 1 :(得分:0)
switch
是一个RxJS运算符,它在xstream中的模拟值为flatten
。流引擎取决于您从哪个*-run
包导入run
函数。例如,如果您执行import {run} from 'rx-run'
,则来自驱动程序的所有源流都将带有稳定的RxJS 4接口。
所有这些多流引擎的东西都是全新的,在最新版本中推出。您可以考虑阅读migration guide