1

私は CycleJS を学習しています。Cycle の HTTP ドライバーを使用しているときに、 response stream streamRxJSswitch/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/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()

これで、 などを続行できます(使用できる演算子は、使用しているCycle.jsmapのバージョンによって異なります。最新の演算子は、ストリームエンジンにxstreamを使用しています)。

@サイクル/httpresponse$$

HTTP Source を使用httpSource.response$$して、メタストリームを取得することもできます。メタストリームを消費する前にフラット化する必要があります。そうすると、結果の応答ストリームは、スーパーエージェントを介して受信した応答オブジェクトを発行します。


または、次のこともできます。

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 に答える