【发布时间】:2016-02-01 23:26:30
【问题描述】:
我开始使用 RxJS,但我不明白为什么在这个例子中我们需要使用像 flatMap 或 concatAll 这样的函数;这里的数组数组在哪里?
var requestStream = Rx.Observable.just('https://api.github.com/users');
var responseMetastream = requestStream
.flatMap(function(requestUrl) {
return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl));
});
responseMetastream.subscribe(url => {console.log(url)})
如果有人可以直观地解释正在发生的事情,那将非常有帮助。
【问题讨论】:
-
这个答案很棒,因为它提供了有价值的参考资料,但是 rxjs 术语不能很好地翻译成英文。 (图片更好)。这就是为什么我建议改为运行像这样的简单示例,或者在 rxjs 存储库中运行更复杂的示例,并在 flatmap 和 map 运算符之前和之后添加“.do”运算符,然后只需使用 Chrome 调试器设置断点。你会立即看到每个产生不同的输出
-
我认为如果
flatMap被命名为mapThenFlatten,那么它就不会那么混乱了。 -
我个人不喜欢这个例子。你为什么要订阅一个可观察的 url 字符串。当然,它会让你想到“rx”的方式,但就代码而言,我觉得不直观,除非你使用它的时间足够长,这样你就不会再质疑它了。但对我来说看起来有点矫枉过正。难怪人们难以理解。
标签: javascript rxjs