我在Angular 2应用程序中使用RxJs来并行地从多个页面的API中获取数据,并保存任何失败的请求以供将来重试.
为此,我想捕获flatMap-ing http get请求(下面的代码)生成的错误,并继续进行进一步的流处理.如果出现错误,我当前的解决方案会导致流停止.
Rx.Observable.range(1, 5)
.flatMap(pageNo => {
params.set('page', ''+pageNo);
return this.http.get(this.API_GET, params)
.catch( (err) => {
//save request
return Rx.Observable.throw(new Error('http failed'));
});
})
.map((res) => res.json());
Run Code Online (Sandbox Code Playgroud)
让我们说在上面的例子中,第2页和第3页的HTTP请求失败.我想为这两个请求处理错误(保存失败的请求以后重试),并让其他请求继续并映射到json().
我尝试使用.onErrorResumeNext而不是捕获,但我无法使这项工作.
我有一个对象类型的列表,如Customer类(属性:customerId,customerName)和一个String数组.
有没有办法从列表中填充/获取包含所有customerName的数组?(除了手动迭代列表),
即
Customer c1 = new Customer(1,"ABC");
Customer c2 = new Customer(2,"DEF");
Customer c3 = new Customer(3,"XYZ");
List<Customer> list = new ArrayList<Customer>();
list.put(c1); list.put(c2); list.put(c3);
String[] allCustomerNames = new String[list.size()];
//Code to get allCustomerNames populated.
//Ofcourse, other than to iterate through list
Run Code Online (Sandbox Code Playgroud)
有什么办法可以类似......
allCustomerNames = list.toArray(customerNameConvertor);
Run Code Online (Sandbox Code Playgroud)
其中customerNameConveror是假设的转换器类,它将告诉使用customerName来获取数组元素的数量.