Асинхронные API в WinJS и Universal Windows приложениях представлены через promises. Одна из основных реализаций обещаний (promises) в WinJS это функция xhr, которая оборачивает XMLHttpRequest в "промис".
Разработаем простое приложение подключающееся по заданному URL.
<div> <input id="inputurl"/> </div> <div id="output"> </div>
В default.js добавим следующий код:
В этом коде с помощью функции WinJS.Utilities.ready мы добавляем обработчик на событие app.onactivated. В этом обработчике мы вешаем триггер на ввод данных и нажатие клавиши Enter.
Функция xhr возвращает объект типа promise.
Далее в default.js добавим функцию changeEvent:
Асинхронную операцию можно остановить вызвав метод cancel у promise-объекта:
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();