Domanda

Ho iniziato un progetto per scrivere un Driver Async PostgreSQL Su Scala e per essere asincronizza, devo accettare callback e usare i futuri, ma poi accettare un callback e Un futuro rende il codice ingombrante perché devi sempre inviare un callback anche se è inutile.

Ecco un test:

"insert a row in the database" in {

  withHandler {
    (handler, future) =>
      future.get(5, TimeUnit.SECONDS)
      handler.sendQuery( this.create ){ query =>  }.get( 5, TimeUnit.SECONDS )
      handler.sendQuery( this.insert ){ query =>  }.get( 5, TimeUnit.SECONDS ).rowsAffected === 1
  }

}

Inviare il callback vuoto è orribile ma non sono riuscito a trovare un modo per renderlo facoltativo o qualcosa del genere, quindi in questo momento non ho molte idee su come dovrebbe essere questa API esterna.

Potrebbe essere qualcosa di simile:

handler.sendQuery( this.create ).addListener { query => println(query) }

Ma ancora una volta, non sono sicuro di come le persone organizzano API in questo senso. Anche fornire esempi in altri progetti sarebbe fantastico.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top