Laden...

JavaScript im C# ausführen, nachdem Request fertig geladen ist

Erstellt von Tara1101 vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.326 Views
T
Tara1101 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren
JavaScript im C# ausführen, nachdem Request fertig geladen ist

Ich brauch mal hilfe...

ich habe einen delegaten und eine Funktion.

public delegate string testDel(string t);

 public string test(string t) {}

  testDel test= new testDel(test);
  IAsyncResult asyncResultN= test.BeginInvoke(Prefs, null, null);

Diese Funktion wird aufgerufen und läuft asynchron ab, wenn sie fertig ist, möchte ich ein javascript raushauen oder auch aufs ASP zugreifen. Einfach eine Meldung raushauen, dass fertig. (trotz ggf andere Seite)
Das problem ist, die Seite ist schon fertig geladen.

Ab dann funktioniert es mit

 ScriptManager.RegisterStartupScript
 ScriptManager.RegisterClientScriptBlock

nicht mehr....

Jmd ne Lösung parat?

P
441 Beiträge seit 2014
vor 4 Jahren

Hi,

HTTP Kommunikation funktioniert so nicht. Ein HttpRequest ist an einem bestimmten Zeitpunkt abgeschlossen.
Du müsstest das Senden der Antwort entsprechend verzögern, bis deine Berechnung durchlaufen ist. Genau dafür gibt es das async/await Pattern.
Allerdings darf es dafür auch nicht zulange dauern, denn irgendwann bricht der Client (idr. ja Browser) ab, wenn keine Antwort kommt.

P.S.: Bitte nutze die C#-Code Tags, dann kann man den Code auch gut lesen.

T
Tara1101 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Ja es geht mir wirklich darum, wenn die Seite fertig geladen ist, dass dann im Hintergrund die asynchrone Funktion noch läuft.
Wenn die fertig ist, muss ne Meldung raus, ob javaScript oder anders ist egal. Da das Laden der Seite aber durch ist, kann ich nirgendwo in ASP oder JS drauf zugreifen. Dafür suche ich eine Lösung.
Dazu muss ich auf das Template zugreifen, die Navi. Da Sie auch die Seite gewechselt haben könnten, die Navi/Template ist aber immer konstant da.

87 Beiträge seit 2016
vor 4 Jahren

Hallo,

WebSocket wäre hier eine Option. Wir im .NET - Bereich von SignalR unterstützt.

glandorf

T
Tara1101 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Websocket wollt ich umgehen, hab ich sohne SignalR schon mit gearbeitet.

Idee die ich noch hatte, per ajax ein webservice abrufen. Nur durchs Seitenwechsel, bin ich noch am überlegen mit der Rückgabe des JS.

Wollt eig auch um webservice drum rum, aber nun gut.

T
2.222 Beiträge seit 2008
vor 4 Jahren

Wenn du mit ASP .NET Web Pages arbeitest, würde ich die ScriptServices in betracht ziehen.
Diese werden dann per JS aufgerufen und dort gibt es dann die Möglichkeit per Callback JS Funktion die OnSuccess und OnError JS Funktionen zu implementieren.
Ist dann wie einen SOAP Webservice umsetzen, nur dass die Aufrufe und auch Rückantworten per JS gemacht werden.

ScriptService

Ist aber nicht mehr State of the Art.
Ein anderer Ansatz wäre sonst z.B. über JS mit WebAPI zu komminizieren und dann per Promise eben den Http Aufruf asynchron laufen zu lassen.
Wäre dann von deiner Seite auch nur ein einfacher Http Request der dann einen entsprechenden Response bekommt.

Wie du es dann schlußendlich lösen willst oder kansnt, ist dann dir überlassen.
Wären aber schon zwei Möglichkeiten, damit du über JS die Anfrage triggern und auf die Rückmeldung asynchron reagieren kannst.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

T
Tara1101 Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren

Aktuell rufe ich den Webservice (Scriptservicer aktiv), per Ajax auf.
leider funktioniert hier dir Rückgabe nicht mehr, wenn ich die Seite (Unterpfade) neu geladen oder gewechselt hab. hab.

Ich schau mal in deinem Link, ob ich da was passendes finde

Hinweis von Abt vor 4 Jahren

Keine Full Quotes
[Hinweis] Wie poste ich richtig?