【发布时间】:2018-07-13 02:24:58
【问题描述】:
RxJS 版本: 5.5.6
要重现的代码:
var obs = Rx.Observable.interval(100)
.startWith(0)
.flatMap(() => {
return Rx.Observable.empty();
});
var sub = obs.subscribe(
(data) => {console.log(data, 1)},
(err) => {console.log(err, 2)},
() => {console.log(3)}
);
上面的代码没有任何记录
预期行为:接下来,应该触发完整的回调
实际行为:未调用订阅回调
其他信息:
如果我们 flatMap 返回 Rx.Observable.of({}),那么回调就会被调用。
根据 RxJS 文档 Observable.never() 创建一个不向 Observer 发出任何项目的 Observable。
Observable.empty() 创建一个不向 Observer 发出任何项目并立即发出完整通知的 Observable。
var obs = Rx.Observable.empty();
var sub = obs.subscribe(
(data) => {
console.log(data, 1);
},
(err) => {
console.log(err, 2);
},
() => {
console.log(3);
},
);
//以上代码日志3
如果我们使用 Observable.interval() 那么 Observable.empty 不会发出完整的通知
【问题讨论】:
标签: javascript rxjs observable