【发布时间】:2018-01-23 21:33:00
【问题描述】:
我正在尝试了解如何将可观察对象映射到循环
代码如下:
let count = now.getFullYear() - this.startYear + 1;
let start = this.startYear;
let allYears = Array.apply(0, Array(count))
.map(function (element, index) {
return index + start;
});
// from is in `import {from} from "rxjs/observable/from";`
let yearEmitter = from(allYears);
let createCustomer = this.customerService.create(); // an http call to return a customer in Json
let createMember = createCustomer.map(c => this.customerService.createMember(c["customerId"])); // an http call to return a member in Json
createMember.map(member=> {
// ??? what can I do here?
// I need to map it to another observable here for every year
})
基本上,对于创建的成员,我想运行从开始年到当前年的报告。
我不能这样做 allYear.foreach( i => createMember.map( blab ) ) ,因为这似乎会多次调用 createMember。
回顾一下,样本数据可以是:startYear = 2015,
那么当createMember返回时,它应该包含一个memberId,它可以用来生成报告(我需要为一个新成员生成样本报告以进行测试)。
因此,在(2015, 2016, 2017) 的范围内,我想映射新成员以遍历该列表中的项目,并进行另一个 http 调用以创建示例报告。我不需要任何输出,我只需要多次链接createMember observable,但理想情况下,我只想进行一次createMember http 调用。
希望现在更有意义。
好吧,我想我可能想多了。
我可以只做createMember.subscribe 然后循环遍历它。 /脸
我正在以一种 scala 方式思考,我可以 flatMap 那个东西,然后将它循环到一个 for-comprehension 中。我想我不必
【问题讨论】:
-
let createCustomer是 Observable 吗?如果有,它包含什么样的内容? 1 次带有数组的单次发射,1 次带有对象的单次发射?多重排放? - 另外:如果您可以添加一个您希望结果看起来如何的示例,这将有所帮助 -
对不起,让我添加更多细节
-
对不起,我仍然不完全明白,你到底想做什么 - 但它看起来应该是一个非常简单的案例,你可能已经找到了解决方案 - 如果你有请发布它作为一个答案并接受你自己的答案:-)
标签: angularjs typescript rxjs