2017-12-20 9 views
1

키/값 쌍이 포함 된 map이 있습니다. 이 map에서 결과로 반환하는 데이터베이스에 스트리밍하여 저장합니다. Observable<String>.배열 목록에있는 모든 관찰 가능한 문자열 수집

차단하지 않고이 문자열에 도달하려고 시도하면 문제가 발생합니다.

항상 비어 있습니다. 여기에 제 구현입니다 :

public Observable<List<String>> uploadKeys(Map<String, String> entries) { 
     final List<String> collection = new ArrayList<>(); 
     entries.entrySet().stream() 
       .forEach(entry -> storeKeysInTheDb(entry.getKey(), entry.getValue()).map(element -> element.isEmpty() ? "" : collection.add(element))); 
     return Observable.just(collection); 
} 

답변

1

storeKeysInTheDb()에 의해 반환되는 관측 가능을 구독해야합니다; 구독 할 때까지 아무 일도 일어나지 않으며 문자열 결과도 표시되지 않습니다.

public Observable<List<String>> uploadKeys(Map<String,String> entries) { 
    return Observable.fromIterable(entries.entrySet) 
      .flatMap(entry -> storeKeysInTheDb(entry.getKey(), entry.getValue()) 
      .filter(element -> !element.isEmpty()) 
      .toList(); 
} 

당신이 결과 관찰에 가입

는 항목 매핑 저장하고 결과 요소는 목록으로 방출 될 것입니다.