2017-05-18 5 views
0

Ich bin auf Play Framework 2.5.14, mit Play für Java.Render-Ansicht während der Verarbeitung von Daten

Ich habe einen Dienst, der einige Daten lädt und verarbeitet, und die Verarbeitung dieser Daten dauert sehr lange.

Ich mache es so:

Controller

public Result showData() { 
    List<Data> data = service.getProcessedData(); 

    return ok(views.html.data.render(data)); 
} 

View

@(data: List[Data]) 

<!-- html code --> 

Aber wenn ich auf die Seite gehen, ist es in leere lange Zeit, weil service.getProcessData() zu nimmt lange. Wenn die Funktion beendet ist, wird die Ansicht gerendert.

Was ich brauche ist, dass die Ansicht geladen wird und wenn die Daten bereit sind, füllen Sie die Ansicht.

+0

Kann der Dienst Akka-Streams verwenden, um die Daten zu verarbeiten? Ich meine, anstatt darauf zu warten, dass alle Daten bereit zum Rendern sind, rendern, sobald ein Teil davon fertig ist. – marcospereira

+0

Es ist unmöglich für mich, Akka für diesen Prozess zu verwenden. Ich hatte darüber nachgedacht, ob Future, 'ComplectableFuture' usw. in diesem Fall möglich sind, aber ich weiß nicht, wie ich es mit' Result' und der Ansicht implementieren soll. – rcanovas

+0

Wenn Sie Akka-Streams verwenden, können Sie Streaming- oder Chunked-Ergebnisse verwenden. – marcospereira

Antwort

0

Wie ich in Kommentaren gesagt habe, habe ich keine Lösung mit Play gefunden.

Was ich mache, ist die Ansicht zu rendern, und in der Ansicht selbst rufe ich eine ajax Petition in Javascript/jquery, um die langsamen Daten zu erhalten.

Hoffe, das kann helfen, es ist die einzige Lösung, die ich mochte.

Verwandte Themen