我是所引用的有关回调和Java Futures的博客文章的原始作者。这是使用flatMap,zip和merge异步进行服务组合的示例。
它获取一个User对象,然后同时获取Social和PersonalizedCatalog数据,然后针对PersonalizedCatalog中的每个视频同时获取一个Bookmark,Rating和metadata,将它们压缩在一起,并将所有响应合并为一个渐进流,作为服务器发送的事件输出。
。
return getUser(userId).flatMap(user -> { Observable<Map<String, Object>> catalog = getPersonalizedCatalog(user) .flatMap(catalogList -> catalogList.videos().<Map<String, Object>> flatMap( video -> { Observable<Bookmark> bookmark = getBookmark(video); Observable<Rating> rating = getRatings(video); Observable<Videometadata> metadata = getVideometadata(video); return Observable.zip(bookmark, rating, metadata, (b, r, m) -> combineVideoData(video, b, r, m)); })); Observable<Map<String, Object>> social = getSocial(user).map(s -> { return s.getDataAsMap(); }); return Observable.merge(catalog, social);}).flatMap(data -> { String json = SimpleJson.mapToJson(data); return response.writeStringAndFlush("data: " + json + "n");});
可以在https://github.com/Netflix/ReactiveLab/blob/952362b89a4d4115ae0eecf0e73f273ecb27ba98/reactive-
lab-
gateway/src/main/java/io/reactivex/lab/gateway/routes/的功能正常的应用程序上下文中查看此示例RouteForDeviceHome.java#L33
由于我无法在此处提供所有信息,因此您也可以在演示文稿形式中找到解释(带有视频链接),网址为https://speakerdeck.com/benjchristensen/reactive-
streams-with-rx-at-javaone- 2014?slide =
32。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)