当前位置: 首页 > 知识库问答 >
问题:

如何在flatmap上创建链运算符

柏阳炎
2023-03-14

在下面的代码中,在companion对象中,create方法应该返回Single。正如代码所示,我使用的最后一个操作符是flatmap(),用于将改装对象转换为Maybe。只是为了确保它不是空的。然而,当我使用这个操作符时

                 .flatMap {retrofit->Maybe.just(retrofit)}

我无法链接任何其他操作符来将上述flatmap返回的值转换为Single。请让我知道为什么我不能在上述代码上链接任何其他操作员,也请查找下面发布的代码

代码

interface WikiApiService {
@GET("api.php")
fun hitCountCheck(
    @Query("action") action: String,
    @Query("format") format: String,
    @Query("list") list: String,
    @Query("srsearch") srsearch: String
):
        Observable<ResponseObjectModelForQuery.ResultOfQuery>

@GET("api.php")
fun hitContinue2(
    @Query("action") action: String,
    @Query("format") format: String,
    @Query("list") list: String,
    @Query("srsearch") srsearch: String
):
        Observable<ResponseObjectModelForContinueSrOffset.ResultOfContinueSrOffset>

@GET("api.php")
fun hitContinue3(
    @Query("action") action: String,
    @Query("format") format: String,
    @Query("list") list: String,
    @Query("srsearch") srsearch: String
):
        Observable<ResponseObjectModelForContinueContinue.Continue>

//why do we need a companion object
companion object {
    fun create(): Single<WikiApiService>? {
        return Single.just(
            Retrofit.Builder()
                .addCallAdapterFactory(
                    RxJava2CallAdapterFactory.create()
                )
                .addConverterFactory(
                    GsonConverterFactory.create()
                )
                .baseUrl("https://en.wikipedia.org/w/")
                .build())
            //workin.flatMap { Maybe.just(it.create(WikiApiService::class.java)).toSingle()}
            .flatMap {retrofit->Maybe.just(retrofit)}
            .//cant chain any further operators

            }
    }
}

共有1个答案

羊舌富
2023-03-14

你有没有尝试使用平地图也许()来代替:

    companion object {
    fun create(): Single<WikiApiService>? {
        return Single.just(
            Retrofit.Builder()
                .addCallAdapterFactory(
                    RxJava2CallAdapterFactory.create()
                )
                .addConverterFactory(
                    GsonConverterFactory.create()
                )
                .baseUrl("https://en.wikipedia.org/w/")
                .build())
            //workin.flatMap {  Maybe.just(it.create(WikiApiService::class.java)).toSingle()}
            .flatMapMaybe {retrofit->Maybe.just(retrofit)}
            .//cant chain any further operators

            }
    }
}

?或者根据您希望链接的内容将可能转换为单个

    companion object {
    fun create(): Single<WikiApiService>? {
        return Single.just(
            Retrofit.Builder()
                .addCallAdapterFactory(
                    RxJava2CallAdapterFactory.create()
                )
                .addConverterFactory(
                    GsonConverterFactory.create()
                )
                .baseUrl("https://en.wikipedia.org/w/")
                .build())
            //workin.flatMap {  Maybe.just(it.create(WikiApiService::class.java)).toSingle()}
            .flatMap {retrofit->Maybe.just(retrofit).toSingle() }
            .//cant chain any further operators

            }
    }
}
 类似资料:
  • 基本上我知道我必须创建两个类,一个名为“链表”的类代表整个列表,一个名为“节点”的类代表列表的每个元素,但我完全迷路了,我甚至不知道如何在不同的节点中“保存”每个元素,我以前从未使用过动态数据结构。如有任何帮助,不胜感激

  • 我有一个flatMap链,在一个flatMap中,当它发出错误时,我想回到flatMap链的一部分,我尝试使用缓存和重试操作符,但dispose()无法阻止它

  • 问题内容: 我想知道是否有一种方法可以在PHP中新创建的对象上链接方法? 就像是: 有人知道实现此目标的方法吗? 问题答案: 在PHP 5.4+中,解析器已被修改,因此您可以执行以下操作 用括号括起来的实例,并链接。 在PHP 5.4之前的版本中,当您使用 在语法上,您不能将方法调用链接到实例化。这是PHP 5.3语法的局限性。实例化对象后,就可以链接了。 我见过的一种解决该问题的方法是某种静态实

  • 我想像这样用resideMenu创建一个应用程序。怎么做?或者有什么有用的库可以帮助实现它?谢谢!

  • 问题内容: 我有HTML的基本概念。我想在示例网站中创建下载链接,但是我不知道如何创建它。我该如何链接才能下载文件而不是访问文件? 问题答案: 这个答案已经过时了。现在,我们有了属性。 如果“下载链接”是指要下载文件的链接,请使用 在将下载开始之前,新的浏览器窗口出现。当浏览器发现资源是文件下载时,通常会关闭该窗口。 请注意,浏览器已知的文件类型(例如JPG或GIF图像)通常会在浏览器中打开。

  • 本文向大家介绍如何在HTML中创建书签链接?,包括了如何在HTML中创建书签链接?的使用技巧和注意事项,需要的朋友参考一下 要使用HTML创建书签链接,您需要使用<a>标记名称属性创建书签。现在,添加到书签的链接。书签也称为命名锚。这对于将读者带到网页的特定部分非常有用。 只要记住HTML5中不推荐使用的<a>标记名称属性。不使用。 示例 您可以尝试运行以下代码在HTML中创建书签链接。