小编Pab*_*oso的帖子

Android优缺点:Event Bus和RxJava

我一直在我的应用程序中使用事件总线(即:greenrobot/EventBus).但我发现使用事件总线有一些缺点:

  • 链接任务执行很困难
  • 很多类来表示事件
  • 不太清晰的代码(嗯,它仍然可以跟踪,但不是很清楚)

我一直在研究处理这个问题的新技术.我读了很多关于RxJava的内容,并想知道它是不是一个解决方案.

所以关于RxJava的问题(基于我最近阅读的内容):

  • RxJava观察员可以随时注册吗?所以不只是在创建Observable时.使用EventBus这是可能的,我可以随时订阅,而不仅仅是在创建Observable时.
  • 如何处理两个或多个发布相同类型事件的发布者(例如:导航事件)?
  • 紧密耦合发布者和订阅者意味着我必须每次都明确指定发布者.所以我不仅要担心事件的类型,还要担心发起者.使用EventBus,我只需要担心事件的类型而不是发起者.

android reactive-programming event-bus rx-java

14
推荐指数
1
解决办法
4434
查看次数

Kotlin的泛型:通用映射参数中的类型不匹配

我有以下使用泛型的代码:

abstract class Event(val name: String)

interface ValueConverter<E : Event> {

    fun convert(event: E): Float

    fun getEventClass(): Class<E>

}

class ValueConverters {

    private val converters = HashMap<String, ValueConverter<Event>>()

    fun <E : Event> register(converter: ValueConverter<E>) {
        converters.put(converter.getEventClass().name, converter)
    }

    fun unregister(eventClass: Class<Event>) {
        converters.remove(eventClass.name)
    }

    fun <E : Event> convert(event: E): Float {
        return converters[event.javaClass.name]?.convert(event) ?: 0.0f
    }

    fun clear() {
        converters.clear()
    }

}
Run Code Online (Sandbox Code Playgroud)

但在这条线上:

converters.put(converter.getEventClass().name, converter)
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误:

类型不匹配.期望ValueConverter <Event>.找到ValueConverter <E>.

我也尝试过这样的事情:

class ValueConverters {

    private val converters = HashMap<String, ValueConverter<Event>>() …
Run Code Online (Sandbox Code Playgroud)

generics kotlin

5
推荐指数
1
解决办法
2665
查看次数

我们如何找到 Node JS 项目中当前使用的已弃用方法的列表?

我想替换 Node JS 项目中某些第三方包中所有已弃用的方法,但我无法\xe2\x80\x99找到列出这些方法的简单方法。我搜索了 Node JS CLI 文档,但无法\xe2\x80\x99 找到执行此操作的确切命令。Node JS CLI 中是否有命令可以实际执行此操作?或者是否有标准做法来替​​换第三方库中已弃用的方法?

\n

command-line-interface deprecated node.js

4
推荐指数
1
解决办法
5747
查看次数