Abbrechen einer Zusage

Abbrechen einer Zusage (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Ein asynchroner Vorgang, der gerade ausgeführt wird, muss gelegentlich gestoppt werden, wenn beispielsweise ein Benutzer die Aktion abbricht, die den Vorgang gestartet hat, oder wenn von der Seite weg navigiert wurde, die die UI enthalten hat, durch die der Vorgang gestartet wurde. Sie können dies durch einen Abbruch der Zusagen erreichen, die den asynchronen Vorgang darstellen.

Anweisungen

Schritt 1:

Mithilfe des Codes im folgenden Beispiel können Sie auf die Schaltfläche Start klicken, um einen asynchronen Vorgang zum Herunterladen einer Webseite zu starten, und anschließend können Sie auf die Schaltfläche Cancel klicken, um den Vorgang abzubrechen.

  1. Erstellen Sie eine leere Windows-Runtime-App namens "TestCancel".

  2. Öffnen Sie "default.html", und fügen Sie ein DIV-Element hinzu, das über die ID xhrDiv verfügt.

    
    <div id="xhrDiv"></div>
    
    
  3. Fügen Sie auch in "default.html" zwei BUTTON-Elemente hinzu, und geben Sie diesen die IDs startBtn und cancelBtn.

    
    <button id="startBtn">Start</button>
    <button id="cancelBtn">Cancel</button>
    
    
    
  4. Öffnen Sie "default.js" (/js/default.js). Fügen Sie die folgenden Variablenzuweisungen unmittelbar nach der use strict-Direktive hinzu.

    
    var xhrDiv;
    var xhrPromise = null;
    
    
    
  5. Fügen Sie auch in "default.js" im Ereignishandler für app.onactivated folgenden Code hinzu.

    
    
    xhrDiv = document.getElementById("xhrDiv");
    
    var startBtn = document.getElementById("startBtn");
    var cancelBtn = document.getElementById("cancelBtn");
    
    startBtn.addEventListener("click", startHandler);
    cancelBtn.addEventListener("click", cancelHandler);
    
    
    
    
  6. Fügen Sie die startHandler-Methode hinzu. Der Starthandler ist verantwortlich für den Start des Downloads. Rufen sie dazu WinJS.xhr auf, um eine Zusage zurückzugeben. Fügen Sie in der then-Klausel der Zusage eine completed-Funktion und eine error-Funktion hinzu. Die error-Funktion wird aufgerufen, wenn der Vorgang abgebrochen wird oder während des Downloadvorgangs ein Fehler auftritt. Im Falle einer abgebrochenen Zusage ist der Ergebnisparameter der error-Funktion ein Fehler. Wenn XmlHttpRequest fehlschlägt, lautet der Ergebnisparameter XmlHttpRequest.

    Bei der ausgewählten URL sollte es sich um eine Seite handeln, bei der das Herunterladen etwas länger dauert, da Sie in einem späteren Schritt auf Abbrechen klicken müssen, bevor der Downloadvorgang abgeschlossen ist.

    
    function startHandler() {
        xhrDiv.textContent = "";
        xhrDiv.style.backgroundColor = "#000000";
        xhrPromise = WinJS.xhr({ url: encodeURI("<your choice of URL>") })
            .then(function complete(result) {
                xhrDiv.textContent = "Downloaded the page";
                xhrDiv.style.backgroundColor = "#00FF00";
            }, 
            function error(result) {
                if (result.name == "Canceled") {
                    xhrDiv.textContent = result.message;
                    xhrDiv.style.backgroundColor = "#FF0000";
                }
                else {
                    xhrDiv.textContent = "other error";
                    xhrDiv.style.backgroundColor = "#FF00FF";
                } 
            });
    }
    
    
    
  7. Fügen Sie die cancelHandler-Methode hinzu. Dieser Handler bricht die Zusage lediglich ab.

    
    function cancelHandler(ev) {
        if (xhrPromise != null) {
            xhrPromise.cancel();
        }
    }
    
    
    
  8. Starten Sie die App im Debugmodus. Die Schaltflächen Start und Cancel sollten angezeigt werden. Wenn Sie auf Start klicken, wird die HTTP-Anforderung asynchron gestartet, und bei einem erfolgreichen Abschluss sollte DIV grün und die Meldung "Downloaded the page" über den erfolgreichen Download angezeigt werden. Wenn Sie auf Start und dann auf Cancel klicken (muss schnell erfolgen), sollte DIV rot und die Meldung "Canceled" über den Abbruch angezeigt werden.

 

 

Anzeigen:
© 2016 Microsoft