脚本的.flatMap(...)中出现“此处不允许返回”错误

时间:2019-05-15 15:30:51

标签: android kotlin observable rx-java2

我是Rxjava2的新手。我有这些方法。 getCategoriesWithScripts()进行2个API调用:

第一个返回所有类别(及其名称和ID

第二个需要一个类别ID来向API询问与每个类别相关联的脚本列表。

我需要这些来显示所有类别及其所有脚本(并使用这些脚本填充适配器)。

private fun getCategoriesWithScripts(userId: Long, cacheStrategy: CacheStrategy, str: String) : Single<List<ScriptEntityWrapper>> {
    return categoryManager.retrieveCategories(cacheStrategy, userId) // User must not be null
            .flattenAsObservable { it }
            .flatMap { category->
                return scriptManager.retrieveScripts(category.id, cacheStrategy)
                        .flattenAsObservable { it }
                        .filter {
                            it.name.toLowerCase().contains(str!!.toLowerCase(), true)  // add the filter on the meta-data here

                        }
                        .map { project -> ScriptEntityWrapper(project) }
                        .toList()
                        .map {
                            it
                        }
            }
}

private fun loadData(reload: Boolean, str: String) {

    getCategoriesWithScripts(userId, cacheStrategy, str)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .doOnSubscribe { .... }
            .doAfterTerminate { .... }
            .autoDisposable(....))
            .subscribe({
                adapter?.clear()
                adapter?.add(ScriptEntityWrapper(getString(R.string.scripts_activity_choose_script_title)))
                adapter?.addAll(it)
            }, { error ->
                adapter?.clear()
                Logger.error("Failed to retrieve scripts", error)
            })
}

我遇到了错误"return" is not allowed here。我不知道代码有什么问题。请帮助

0 个答案:

没有答案