2016-06-02 6 views
1

Hallo Leute,Handle Ressourcen und Bilder Timeout in angularJs

Ich arbeite an einer App basierend auf Ionic - so AngularJS. Bei meinen Tests der App habe ich mein Gerät an ein sehr langsames WLAN angeschlossen, um zu testen, wie die App reagiert ... Es ist schrecklich, aber nicht so schlecht, weil das Problem sehr lokalisiert ist.

Zuerst würde die App überhaupt nicht laden. Channel not fired: onDOMContentLoaded wird in der Konsole angezeigt und eine Warnung zeigt Application Error - The connection to the server was unsuccessful. (file:///android_asset/www/index.html).

Ich folgte dem Tipp hier: increase loadUrlTimeoutValue

Die App Absturz gestoppt. Aber es wäre auf einem weißen Bildschirm bleiben, bis schließlich der einzige http-Aufruf in den index.html fehlschlägt:

http://maps.googleapis.com/maps/api/js?key=myKey&libraries=places 

Die Konsolenprotokolle Failed to load resource: net::ERR_TIMED_OUT und der App Schopf aus dem Sumpf wie üblich. Die zweite Sache, die Bilder, die in der Galerie der App angezeigt werden muss, werden nicht angezeigt, mich ein paar 408 (Request Time-out) nach einer langen Ladezeit bekommen, zum Beispiel

GET http://res.cloudinary.com/myimage.jpg 408 (Request Time-out) 

So ist meine Vermutung, auf diese sehr langsam Wifi, alle http Anrufe sind ein Problem - sie scheitern einfach nach einiger Zeit und gibt einen Fehler, der die Konsole angezeigt werden kann.

Meine einfache Frage: Wie kann man diese Art von Fehler global abfangen, um eine Nachricht an den Benutzer anzeigen zu können? Oder noch besser, höre auf jeden HTTP-Anruf und Timeout selbst nach 5s oder so, um die besagte Nachricht anzuzeigen?

Vielen Dank!

Antwort

0

Angulare $http Dienst hat eine timeout Eigenschaft in Config-Argument. Sie können es auf 5s setzen (5000 in Millisekunden). Dann können Sie das Timeout im Fehlerrückruf behandeln.

+0

Danke für die Beantwortung. Ich weiß darüber, aber es wird nicht wirklich helfen, da ich nirgends den $ http-Dienst anrufe. Wie ich schon sagte, ist es ein Skript-Tag, das die Maps-API und IMG-Tags mit ihrem URL-Argument aufruft. –

+0

ok, also ist es nicht wirklich ein kantiges Problem – apieceofbart

+0

Kein Problem von Angular, nein, aber eine Möglichkeit, dies global zu handhaben, ist nicht etwas Theoretisch Seltsames - vielleicht eine globale Konfiguration zu setzen oder etwas, von dem ich noch nichts gehört habe ... Wie auch immer, ein normaler Javascript-Weg könnte auch zu einer Lösung führen. –

Verwandte Themen