2016-08-09 54 views
0

Ich arbeite im ASP.Net 4.0 MVC-Projekt, wo ich verschiedene APIs in verschiedenen Threads gleichzeitig aufruft. Ich verwende Task.Factory.StartNew() für diesen Zweck, der Ereignis .ContinueWith() hat, wird nach Abschluss jedes Threads ausgeführt.Popup-Ergebnisse von verschiedenen APIs, die in verschiedenen Threads in View ausgeführt werden

Meine Abfrage ist, wie werde ich Daten zu verschiedenen Zeiten (wie APIs unterschiedliche Zeit nehmen) in View (wie es einige Ajax beteiligt ist) füllen. Momentan warte ich auf den gesamten Thread und vervollständige das Ergebnis am Ende.

Benötigen Sie eine Anleitung, um fortzufahren, um etwas Zeit zu sparen.

Antwort

0

aktualisieren Sie können die Ansicht aktualisieren, nachdem die Aktion nur mit dem MVC-Framework zurückgekehrt ist. Was können Sie tun

  1. Mark Ihre Aktion als async und erwarten innerhalb aller Aufgaben (await Task.WhenAll) - dies wird Ihnen ein Thread (die eine, die die Anforderung verarbeitet und Sie sind zur Zeit blockiert) speichern, sondern die Benutzererfahrung wird Seien Sie gleich - er muss warten, bis alle die vollständige Ansicht sehen
  2. Sie können die Ansicht sofort zurückgeben, ohne irgendwelche API-Aufrufe zu starten. Die Ansicht sollte aus mehreren Teilen bestehen, die mit AJAX andere Aktionen aufrufen, um jeden API-Aufruf zu verarbeiten. Dies funktioniert nur, wenn die Ansicht aus verschiedenen Regionen besteht, die vom Ergebnis einer einzelnen API abhängen. Wenn Sie viele API-Daten für ein einzelnes Feld in der Ansicht benötigen, würde ich mit Ansatz Nr. 1
gehen
0

Machen Sie ein Wörterbuch/JSON der Antworten und teilen Sie diese Variable mit den Aufgaben, so dass, wenn ein Finish es füllt.

Und Sie können einen Aktualisierungszeitraum erstellen, um die neuen Ergebnisse mithilfe von AJAX hinzuzufügen, während eine Aufgabe noch ausgeführt wird.

diese geben Ihnen vielleicht ein paar Ideen, wie Refresh/reload the content in Div using jquery/ajax