Настройка значений времени ожидания с помощью WinJS.xhr или HttpClient (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
При использовании объекта XMLHttpRequest можно задать значения времени ожидания напрямую, что невозможно при использовании Windows.Web.Http.HttpClient или WinJS.xhr. Тем не менее есть способ настройки времени ожидания в объектах WinJS.Promise. Вызов метода WinJS.Promise.timeout гарантирует, что запрос, не завершенный в течение указанного времени, будет отменен.
В коде из проекта XhrExample, созданного в разделе Скачивание файла с помощью WinJS.xhr, заключите функцию WinJS.xhr в вызов WinJS.Promise.timeout.
Обратите внимание, что при таком способе использования WinJS.Promise.timeout вам необходимо применить метод then, который возвращает объект Promise в случае ошибки в отличие от метода done.
var xhrDiv = document.getElementById("xhrReport");
WinJS.Promise.timeout(1500, WinJS.xhr({ url: "https://www.microsoft.com" })
.then(function complete(result) {
xhrDiv.innerText = "Downloaded the page";
xhrDiv.style.backgroundColor = "#00FF00";
},
function error(error){
// The error thrown when xhr is canceled has a message property, not a statusText property.
if (error.statusText)
xhrDiv.innerHTML = "Got error: " + error.statusText;
else
xhrDiv.innerHTML = "Got error: " + error.message;
xhrDiv.style.color = "#000000";
xhrDiv.style.backgroundColor = "#FF0000";
},
function progress(result) {
xhrDiv.innerText = "Ready state is " + result.readyState;
xhrDiv.style.color = "#000000";
xhrDiv.style.backgroundColor = "#0000FF";
}));
При выполнении этого кода веб-запрос должен завершиться без ошибок и цвет элемента DIV должен стать зеленым. Чтобы узнать, что произойдет при отмене запроса, сократим период времени ожидания до 200 мс:
var xhrDiv = document.getElementById("xhrReport");
WinJS.Promise.timeout(200, WinJS.xhr({ url: "https://www.microsoft.com" })
.then(function complete(result) {
xhrDiv.innerText = "Downloaded the page";
xhrDiv.style.backgroundColor = "#00FF00";
},
function error(error){
// The error thrown when xhr is canceled has a message property, not a statusText property.
if (error.statusText)
xhrDiv.innerHTML = "Got error: " + error.statusText;
else
xhrDiv.innerHTML = "Got error: " + error.message;
xhrDiv.style.color = "#000000";
xhrDiv.style.backgroundColor = "#FF0000";
}));
В этом случае веб-запрос должен быть отменен. Цвет элемента DIV станет красным, и появится сообщение "Получена ошибка. Отменено".
При помощи кода из проекта XhrExample можно также показать, как задать значение времени ожидания при использовании Windows.Web.Http.HttpClient.
var xhrDiv = document.getElementById("xhrReport");
var hc = new Windows.Web.Http.HttpClient();
var uri = new Windows.Foundation.Uri("https://www.microsoft.com");
WinJS.Promise.timeout(1500, hc.getAsync(uri)
.then(function complete(result) {
xhrDiv.innerText = "Downloaded the page:";
xhrDiv.style.backgroundColor = "#009900"; // Set to dark green.
result.content.readAsStringAsync().then(function complete(str) {
xhrDiv.innerText += "Content:" + str;
xhrDiv.style.backgroundColor = "#00FF00"; // Set to light green.
})
},
function error(error) {
// The error thrown when xhr is canceled has a message property, not a statusText property.
if (error.statusText)
xhrDiv.innerHTML = "Got error: " + error.statusText;
else
xhrDiv.innerHTML = "Got error: " + error.message;
xhrDiv.style.color = "#000000";
xhrDiv.style.backgroundColor = "#FF0000";
},
function progress(result) {
xhrDiv.innerText = "Ready state is " + result.readyState;
xhrDiv.style.color = "#000000";
xhrDiv.style.backgroundColor = "#0000FF";
}));
Связанные разделы
Другие ресурсы
Скачивание файла с помощью WinJS.xhr
Выкладывание двоичных данных с помощью WinJS.xhr
Ссылки
Дополнительные возможности объекта XMLHttpRequest
Примеры
Пример интеграции содержимого и элементов управления из веб-служб
Использование большого двоичного объекта для сохранения и загрузки примера содержимого
Пример веб-проверки подлинности
Пример XHR, обработки ошибок навигации и схем URL-адресов