【发布时间】:2018-11-13 17:31:22
【问题描述】:
我看到 http 请求发生了 - 在 Chrome 网络选项卡中,也通过在 fetch 承诺中使用 then() - 使用以下代码,尽管从未订阅过内部可观察 (saveCourses$)。
根据更新的 rxjs 文档,我修改为使用 from() 而不是 fromPromise(),但同样的情况发生了。
我的理解是内部的 Observable 不应该运行?
ngOnInit() {
this.form.valueChanges.pipe(
filter(() => this.form.valid)
)
.subscribe(changes => {
const saveCourses$ = fromPromise(fetch(`/api/courses/${this.course.id}`, {
method: 'PUT',
body: JSON.stringify(changes),
headers: {
'content-type': 'application/json'
}
}));
});
}
【问题讨论】:
-
fromPromise方法很可能会立即使用 Promise 以将其转换为可观察对象。你为什么不使用内置的 Angular http 东西来按你想要的方式做事? -
我正在学习关于 rxjs 的 Angular 大学课程 - 我不打算在任何项目中使用 fetch,但对于这个示例,我理解 http 请求不应该在没有订阅的情况下发生(根据致尚未回复我的课程作者)。我真的很想知道为什么会发生这种自动订阅
-
如前所述,它发生在
fromPromise代码中。代码中传递给Observable的回调是立即调用then方法。 github.com/ReactiveX/rxjs/blob/…
标签: javascript angular ecmascript-6 rxjs6