【发布时间】:2021-12-10 08:44:46
【问题描述】:
当调用observer.complete() 或observer.error() 时,观察者停止发送数据并被视为完成。但是,如果观察者中有一个 for 循环,即使在调用 observer.complete() 之后,循环也会继续运行。有人可以向我解释这种行为吗?我希望循环会被缩短。当前行为意味着间隔或 while 循环将永远在 Observable 中运行,除非我在代码中取消订阅。
在下面的sn-p中我添加了一个console.log,看看日志是否会在observer.complete()之后被调用。
const testObservable = new Observable( observer => {
for (let count = 0; count < 11; count++){
observer.next(count);
if (count > 5) {
observer.complete()
console.log("test")
}
if (count > 7) {
observer.error(Error("This is an error"))
}
}}
);
let firstObservable = testObservable.subscribe(
next => {console.log(next)},
error => { alert(error.message)},
() => {console.log("complete")}
)
【问题讨论】:
标签: javascript rxjs-observables