Path: csiph.com!aioe.org!news.mixmin.net!weretis.net!feeder4.news.weretis.net!feeder5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: "Christoph M. Becker" Newsgroups: de.comp.lang.javascript Subject: Re: Gluecksrad Date: Wed, 16 Nov 2016 12:58:39 +0100 Organization: solani.org Lines: 38 Message-ID: References: <3307965.kQq0lBPeGt@PointedEars.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: solani.org 1479297505 5555 eJwFwYEBwDAEBMCVCF6N0zz2HyF3YVAwHQGPjb35sWky7TIbmaU1oDdny/dcCI7Gf6ybYD8tqhHI (16 Nov 2016 11:58:25 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Wed, 16 Nov 2016 11:58:25 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 X-NNTP-Posting-Host: eJwFwYEBwCAIA7CXBNvizqls/H/CEm6FuiAKHM5d6Fz9+TjAPWWmaxiA8zRrvUwlTN3Cox8WuRBj Cancel-Lock: sha1:0W9EVr+svFYv3NY7Z/u6Y2/n7jg= In-Reply-To: X-User-ID: eJwFwQcBwEAIBDBLrGPIKfD4l9AE6uwT5nDD4WarIL3R80W050PR0VDeVQmfGYvypANYfT8kjRDm Xref: csiph.com de.comp.lang.javascript:4798 On 16.11.2016 at 12:13, Klaus Ketelaer wrote: > Ich hatte ganz bewusst false eingetragen, weil ich eine synchrone > Verarbeitung wollte. Du vielleicht, aber auch die User? Die ärgern sich nämlich, wenn der Browser einfriert, weil ein Request mal lange dauert. > Normalerweise würde ich nach der Verarbeitung die aktuellen Werte > aus der DB zurücklesen, und erst dann weiter arbeiten. > (Leider bin ich zu blöd, richtig zu fragen, wie Letzteres geht.) Im Prinzip kannst Du folgendes machen: * XHR vorbereiten (inklusive aufsetzen des readystatechange Listeners) * den asynchronen XHR abschicken * sofort Feedback geben, dass im Hintergrund etwas verarbeitet wird, z.B. durch Anzeige eines Spinners In der Zwischenzeit kann der Anwender im Browser weitermachen. Auf der Serverseite behandelst Du den Request, und antwortest dann mit den nötigen Daten (z.B. als JSON); diese können auch einen Fehler signalisieren (und eine passende Fehlermeldung enthalten). Kommt die Antwort beim Client an, dann wird automatisch der readystatechange Listener aufgerufen. Dort dann etwa: * prüfen auf readyState == 4 (alles andere ignorieren) * das Feedback, dass etwas verarbeitet wird, wieder zurück nehmen * prüfen auf status * falls okay (100 etc.): die empfangenen Daten verarbeiten (für JSON siehe JSON.parse()[1]), und anzeigen * andernfalls: Fehler melden [1] -- Christoph M. Becker