【发布时间】:2017-03-02 10:53:23
【问题描述】:
如何取消
Observable -> debounceTime -> mergeMap -> 订阅
mergeMap 方法中的流?
我想实现这样的目标:
var request = this.listPartners.filterChange.asObservable()
.debounceTime(300)
.mergeMap(value =>
{
if (value != "")
return this.partnersService.list({ filter: value }) //call http get
return null;
});
if (request)
request.subscribe(partners => this.partners = partners);
但我得到错误:
例外:您在预期流的位置提供了“未定义”。你 可以提供 Observable、Promise、Array 或 Iterable。
我知道mergeMap 必须返回Observable, Array ...,但是如果value == "",我不想向服务器发出请求。怎么样?
已编辑:
我的第一个代码是(不返回 null):
var request = this.listPartners.filterChange.asObservable()
.debounceTime(300)
.mergeMap(value =>
{
if (value != "")
return this.partnersService.list({ filter: value })
});
if (request)
request.subscribe(partners => this.partners = partners);
这与调用return; 相同,但异常是相同的,如果我调用return null、return; 或什么都没有。
为 Jai asnwer 编辑:
var request = this.listPartners.filterChange.asObservable()
.debounceTime(300)
.mergeMap(value =>
{
if (value != "")
return this.partnersService.list({ filter: value })
return;
});
console.log("request", request); //this is not called if (value == "")
if (request)
request.subscribe(partners => this.partners = partners);
【问题讨论】:
标签: angular