如何编写Observable以避免给定的嵌套和相关回调

如何编写Observable以避免给定的嵌套和相关回调,第1张

如何编写Observable以避免给定的嵌套和相关回调

我是所引用的有关回调和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。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5428463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存