Асинхронные операции в WinJS

Асинхронные API в WinJS и Universal Windows приложениях представлены через promises. Одна из основных реализаций обещаний (promises) в WinJS это функция xhr, которая оборачивает XMLHttpRequest в "промис". 

Разработаем простое приложение подключающееся по заданному URL.

В файл default.html добавим следующий код:
<div>
 <input id="inputurl"/>
</div>
<div id="output">
</div>

В default.js добавим следующий код:
WinJS.Utilities.ready(function() {
    var input = document.getElementById("inputurl");
    input.addEventListener("change", changeEvent);
}, false);

В этом коде с помощью функции WinJS.Utilities.ready мы добавляем обработчик на событие app.onactivated. В этом обработчике мы вешаем триггер на ввод данных и нажатие клавиши Enter.

Функция xhr возвращает объект типа promise.

Далее в default.js добавим функцию changeEvent:
function changeEvent(e) {
    var resultDiv = document.getElementById("output");
    WinJS.xhr({
        url: e.target.value
    }).then(function completed(result) {
        if (result.status === 200) {
            resultDiv.style.backgroundColor = "Green";
            resultDiv.innerText = "Success";
        }
    },

    function error(e) {
        resultDiv.style.backgroundColor = "red";
        resultDiv.innerText = e.statusText;
    });
}

Асинхронную операцию можно остановить вызвав метод cancel у promise-объекта:
xhrPromise.cancel();