Qual è la migliore pratica per le API asincroni che restituiscono futures su Scala?
https://softwareengineering.stackexchange.com/questions/139094
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