Mi acción PlayFramework regresa antes de que un futuro esté listo, ¿cómo actualizo un componente de página web?

Tengo una función Scala PlayFramework que llama a MongoDB y obtiene unFuture[Seq[Document]] resultado. Después de un evento de zoom / panorámica del mapa, este juegoAction La función se llama desde JavaScript en una página web a través de xhttp / GET. Mi método de Acción en el lado de Juego regresa antes del FuturoonComplete/Success es ejecutado. Por lo tanto, estoy buscando una forma de llamar a una función de JavaScript para obtener los datos cuando se activa onComplete / Success de Scala Future. ¿Cómo haría eso, o estoy mirando esto mal?

Aquí está el código en cuestión.

def rect(swLon: Float, swLat: Float, neLon: Float, neLat: Float) = Action {
  val sb = new StringBuilder()
  sb.append("<tt>boundingBox: swLon=" + swLon + ", swLat=" + swLat + ", neLon=" + neLon + ", neLat=" + neLat + "</tt>")
  if (oDb.isDefined) {
    val collection: MongoCollection[Document] = oDb.get.getCollection(collectionName)
    val fut = getFutureOne(collection) // returns a Future[Seq[Document]]
    fut onComplete {
      case Success(docs) => { for (doc <- docs) { setMongoJson(doc.toJson } }
      case Failure(t) => { println("FAIL: " + t.getMessage) }
    }
  }
  Ok(sb.toString)
}

// below is temporary until I figure out a better way to store/return the result when it comes in
private var mongoJson: String = ""
private def setMongoJson(s: String): Unit = mongoJson = s

getFutureOne es temporal, solo hace undb.collection.find().first().toFuture. Solo quería asegurarme de que mi conexión con MongoDB funcionara, y así es. De hecho, lo reemplazaré con una consulta para devolver datos que se encuentran dentro del cuadro delimitador.

Respuestas a la pregunta(1)

Su respuesta a la pregunta