Javascript 为什么在主题完成后仍可以调用subscribe?
根据大多数博客,一旦我们称之为complete,我们不需要明确取消订阅主题。我打电话给complete后,试图订阅该主题。仍在执行完整的回调Javascript 为什么在主题完成后仍可以调用subscribe?,javascript,angular,rxjs,subject-observer,Javascript,Angular,Rxjs,Subject Observer,根据大多数博客,一旦我们称之为complete,我们不需要明确取消订阅主题。我打电话给complete后,试图订阅该主题。仍在执行完整的回调 let s = new Subject(); s.complete(); s.subscribe( () => { console.log("next"); }, () => {}, () => { console.log("complete"); } ); 输出:完成 为什么在主题完成后才允许订阅
let s = new Subject();
s.complete();
s.subscribe(
() => {
console.log("next");
},
() => {},
() => {
console.log("complete");
}
);
输出:完成
为什么在主题完成后才允许订阅它?在这种情况下,首先发送“完成”通知,然后立即取消订阅。所以它仍然认为,你不必手动不明嫌犯
如果您首先想知道订阅有什么用,您可以考虑一个例子,我们将
isEmpty
运算符应用于主题,并根据该运算符所指定的值执行某些操作。为什么对此感到惊讶?你期望发生什么?这是因为subscribe
是什么。您将得到一个next
回调,一个error
回调,最后是第三个complete
回调。您正在捕获它,因此您会看到记录的“complete”
。