AngularJS $ http ajax-Anforderung ist nicht asynchron und führt zum Hängen der Seite

8

Ich habe einen Dienst, bei dem ich Daten vom Server abrufe. Wenn ich auf die Schaltfläche klicke, um die Anfrage an den Server über diesen Dienst zu senden, bleibt das Fenster stehen, bis ich eine Antwort vom Server erhalte. Kann ich irgendetwas tun, um diese Anfrage asynchron zu machen?

Hier ist mein Service.

%Vor%

HTML.

%Vor%

Code

%Vor%     
lostpacket 27.09.2013, 16:31
quelle

4 Antworten

11

Obwohl es einige Argumente für die Vor- und Nachteile Ihres Ansatzes gibt, denke ich, dass das Problem hier beantwortet wird: AJAX-Aufruf friert den Browser ein wenig ein, während er eine Antwort erhält und erfolgreich ausgeführt wird

Um zu testen, ob dies tatsächlich Teil des Problems ist, tupfen Sie eine Antwort auf und servieren Sie sie statisch. Ich benutze Fiddler oder WireShark, um die Antwort zu bekommen und dann in eine Datei wie testService.json zu speichern. XHR und alle seine verschiedenen Ableitungen wie $ HTTP $ .ajax sehen es als ein Service, obwohl die Überschriften leicht unterschiedlich sein können.

    
Nathaniel Johnson 27.09.2013, 17:21
quelle
3

Verwenden Sie das Erfolgsversprechen und schließen Sie die Protokolldaten in einer Gruppe von Objekten ein, die Sie an einen $ scope anhängen können.

Damit Ihr Dienst nicht über eine Blockierungsmethode verfügt, müssen Sie eine Liste mit "LogEntries" erstellen.

%Vor%

Dann injizieren Sie in Ihrem Controller Ihren Dienst und verweisen Sie auf das Protokolldaten-Array dieses Dienstes, damit Angular es überwacht und die Ansicht korrekt ändert

%Vor%

Dann im HTML einfach etwas über logEntries tun:

%Vor%     
Doug T. 27.09.2013 16:39
quelle
2

Verwenden Sie diesen Code zum Konfigurieren

%Vor%     
Behnam Mohammadi 03.08.2016 12:43
quelle
-1
%Vor%     
Sanjeev Rao 25.07.2016 06:01
quelle

Tags und Links