CombineLatest 与 of 相比如何工作
How does CombineLatest work compared to of
我正在了解 forkJoin
。与使用 of
创建可观察对象相比,我正在努力了解它的工作原理。请告诉我是否有这个权利:
当我使用 of
时,它会创建一个 observable,它会立即发出您传递给它的值。所以如果我有这个:
const obs = of('hello');
obs.subscribe(console.log);
...只要我订阅 obs
的行执行,它就会记录 'hello'。这是正确的吗?
现在如果我有这个:
const obs1 = httpClient.get(url1);
const obs2 = httpClient.get(url2);
const fjObs = forkJoin({obs1, obs2});
fjObs.subscribe(({obs1, obs2}) => console.log(`obs1=${obs1}, obs2=${obs2}`));
...它不会在我订阅 fjObs 的行执行后立即记录 obs1
和 obs2
。它只会在 obs1 和 obs2 都完成时记录它们,这可能是在我订阅 fjObs 之后的一段时间。这是正确的吗?
在此之前,fjObs 只是一个尚未发出任何值的可观察对象。对吗?
请让我知道我的理解是否正确。谢谢。
是的,你基本上是正确的。 请注意 forkJoin
接受一组可观察值,因此您的代码应该是:const fjObs = forkJoin([obs1, obs2]);
正如评论中所指出的,这个假设是错
你也可以测试这个:
forkJoin([of('one'), of('two')]).subscribe(console.log);
在这种情况下,console.log 将立即执行,因为 of
都会立即发出。
您也可以这样做:forkJoin([of('one'), httpClient.get(url1)]).subscribe(console.log);
在这种情况下,它将在 HTTP 请求完成后记录。
您不应该将 of
与forkJoin
进行比较,因为它们是非常不同的概念。
of
创建一个 observable 并且 forkJoin
组合一个 observable 数组并在所有 发出一个值 完成时发出(每个 observable 的最后一个值)
我正在了解 forkJoin
。与使用 of
创建可观察对象相比,我正在努力了解它的工作原理。请告诉我是否有这个权利:
当我使用 of
时,它会创建一个 observable,它会立即发出您传递给它的值。所以如果我有这个:
const obs = of('hello');
obs.subscribe(console.log);
...只要我订阅 obs
的行执行,它就会记录 'hello'。这是正确的吗?
现在如果我有这个:
const obs1 = httpClient.get(url1);
const obs2 = httpClient.get(url2);
const fjObs = forkJoin({obs1, obs2});
fjObs.subscribe(({obs1, obs2}) => console.log(`obs1=${obs1}, obs2=${obs2}`));
...它不会在我订阅 fjObs 的行执行后立即记录 obs1
和 obs2
。它只会在 obs1 和 obs2 都完成时记录它们,这可能是在我订阅 fjObs 之后的一段时间。这是正确的吗?
在此之前,fjObs 只是一个尚未发出任何值的可观察对象。对吗?
请让我知道我的理解是否正确。谢谢。
是的,你基本上是正确的。 请注意 正如评论中所指出的,这个假设是错forkJoin
接受一组可观察值,因此您的代码应该是:const fjObs = forkJoin([obs1, obs2]);
你也可以测试这个:
forkJoin([of('one'), of('two')]).subscribe(console.log);
在这种情况下,console.log 将立即执行,因为 of
都会立即发出。
您也可以这样做:forkJoin([of('one'), httpClient.get(url1)]).subscribe(console.log);
在这种情况下,它将在 HTTP 请求完成后记录。
您不应该将 of
与forkJoin
进行比较,因为它们是非常不同的概念。
of
创建一个 observable 并且 forkJoin
组合一个 observable 数组并在所有 发出一个值 完成时发出(每个 observable 的最后一个值)