2017-09-29 2 views
0

Ich stehe hier ziemlich vor der Herausforderung, und da ich neu in der Web-Entwicklung bin, weiß ich nicht wirklich, wo ich suchen soll.Stoppen Sie eine JavaScript-Funktion nach einer bestimmten Zeit

Auf dieser Website ich arbeite, sind wir eine Karte über eine Javascript-Funktion Laden:

initializeMap(); 

Diese Funktion innerhalb genannt wird: diese Funktion „

$(document).on("ready", function() { 
}) 

Manchmal initializeMap() " dauert sehr lange, wahrscheinlich weil ich Informationen von einem anderen Server erhalte, und es könnte ein Timeout sein, wenn Sie eine langsame Verbindung haben, oder aus irgendeinem anderen Grund.

Gibt es eine Möglichkeit zu sagen, wenn "initializeMap();" nicht innerhalb von 30 Sekunden abgeschlossen ist, möchte ich einen Fehler (Oder console.log für ein Beispiel) werfen.

Ich habe viel gesucht, und "Promise.race" scheint in der Lage, es zu tun, aber dieses System erfordert alte Browser-Unterstützung, und wir können nicht wirklich die node.js auf dem Server aktualisieren, so dass ich ' Ich klebte an ES5.

Ich hoffe, es gibt ein paar nette Leute, die mir in die richtige Richtung zeigen können.

ps. Wir verwenden jQuery auch (Version 3.1)

+0

Sie können polyfill 'Versprechen', das ist MDN's Polyfilly empfohlen - https://github.com/stefanpenner/es6-promise – Brian

+6

Wenn Sie jQuery' $ .ajax' verwenden, um die Daten zu erhalten, können Sie die verwenden 'timeout' -Eigenschaft, um eine maximale Wartezeit für die Anfrage festzulegen. Wenn es überschritten wird, wird der Ereignishandler 'error' ausgelöst. –

+0

Was meinen Sie mit "alter Browserunterstützung"? – guest271314

Antwort

0

Ich fand eine andere Lösung.

Ich verwendete setTimeout, um nach 30 Sekunden nach einer Ladeanimation zu suchen. Wenn die Ladeanimation noch vorhanden ist, zeige ich einen Fehler an, bei dem der Benutzer die Seite neu laden kann.

Verwandte Themen