我有一个触发服务器请求的方法。它可以访问redux-store中的流,并且一旦在所提到的流中找到请求的结果就应该执行回调。所以基本上:
private resultStream$: Observable<boolean>;
doFetch(args, callback) {
store.dispatchHttpRequest(args);
// this should only be executed when resultStream$ emits true
callback();
}
如果callback();
发出真假并且我从流中取消订阅,那么如何调用resultStream$
,那么没有内存泄漏?
我已经尝试了takeWhile()
,将dispatchHttpRequest
条件的设置者(对于takeWhile)和回调本身放在subscription()
中,但似乎我做错了因为我得到了我的应用程序中的错误。确切地说,只有在多次调用doFetch()
时才执行回调,因此第一个请求不会收到回调响应。
答案 0 :(得分:2)
试试这个:
def f():
rest = [2, 3]
return 1, *rest
答案 1 :(得分:1)
您可以使用链处理时调用的finally
。这意味着当所有观察者取消订阅或链完成/错误时。
private resultStream$: Observable<boolean>;
doFetch(args, callback) {
store.dispatchHttpRequest(args);
return this.resultStream
// be aware that `takeWhile` completes when the predicate function returns false
.takeWhile(val => !Boolean(val) /* or whatever ... */)
.finally(() => callback());
}
如果你知道连锁店即将完成,你就不需要取消订阅。