首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在apollo-client watchQuery中使用rxjs takeWhile operator?

如何在apollo-client watchQuery中使用rxjs takeWhile operator?
EN

Stack Overflow用户
提问于 2020-07-02 01:35:38
回答 1查看 322关注 0票数 0

我有一个Svelte应用程序,其中我使用watchQuery订阅查询。我想使用rxjs中的takeWhile运算符,但是我得到了这个错误:

TypeError: $client.watchQuery(...).takeWhile is not a function

有没有办法将takeWhileapollo-clientwatchQuery订阅一起使用?

这是我的代码:

代码语言:javascript
复制
$client.watchQuery({
  query: SomeRandomQuery,
  variables: {},
})
.pipe(takeWhile(() => isAlive))
.subscribe(res => {
 ...
});

我还尝试删除pipe()并直接传递它,但得到了相同的错误。

代码语言:javascript
复制
$client.watchQuery({
  query: SomeRandomQuery,
  variables: {},
})
.takeWhile(() => isAlive)
.subscribe(res => {
 ...
});

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-02 05:14:47

尝试使用takeUntil

代码语言:javascript
复制
const finalise = new Subject();

$client.watchQuery({
  query: SomeRandomQuery,
  variables: {},
})
.pipe(takeUntil(finalise))
.subscribe(res => {
 ...
});

现在,当您想要最终确定可观察对象时,您可以在下一步调用该主题。

代码语言:javascript
复制
finalise.next();
finalise.complete();

这是我们在角度组件中使用的已建立的模式,其中单个主体可以在单个onDestroy方法中完成所有可观察到的链。

这样做的好处是finalise是一个可观察对象,当它发出时将触发takeUntil,take和takeWhile不接受可观察对象作为它们的参数,并且将保持订阅,直到可观察对象发出导致孤立订阅。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62682381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档