我有一个Svelte应用程序,其中我使用watchQuery订阅查询。我想使用rxjs中的takeWhile运算符,但是我得到了这个错误:
TypeError: $client.watchQuery(...).takeWhile is not a function
有没有办法将takeWhile与apollo-client的watchQuery订阅一起使用?
这是我的代码:
$client.watchQuery({
query: SomeRandomQuery,
variables: {},
})
.pipe(takeWhile(() => isAlive))
.subscribe(res => {
...
});我还尝试删除pipe()并直接传递它,但得到了相同的错误。
$client.watchQuery({
query: SomeRandomQuery,
variables: {},
})
.takeWhile(() => isAlive)
.subscribe(res => {
...
});谢谢
发布于 2020-07-02 05:14:47
尝试使用takeUntil
const finalise = new Subject();
$client.watchQuery({
query: SomeRandomQuery,
variables: {},
})
.pipe(takeUntil(finalise))
.subscribe(res => {
...
});现在,当您想要最终确定可观察对象时,您可以在下一步调用该主题。
finalise.next();
finalise.complete();这是我们在角度组件中使用的已建立的模式,其中单个主体可以在单个onDestroy方法中完成所有可观察到的链。
这样做的好处是finalise是一个可观察对象,当它发出时将触发takeUntil,take和takeWhile不接受可观察对象作为它们的参数,并且将保持订阅,直到可观察对象发出导致孤立订阅。
https://stackoverflow.com/questions/62682381
复制相似问题