Я хочу установить значение тайм-аута, чтобы, если сервер не отвечает в течение определенного периода времени, пользовательский интерфейс должен двигаться вперед и не ждать ответа. Я использовал синтаксис ниже, но он не ограничивает пользовательский интерфейс для прослушивания в течение указанного времени.
d3.xhr(my_url)
.header('Content-Type', 'text/xml')
.header('timeout', 2000)
.send(this.my_method, my_xmlData, function(error, data) {
}
Я читал здесь, что d3 xhr теперь поддерживает функцию тайм-аута. Может ли кто-нибудь рассказать мне, как правильно использовать это?
Просто передайте время (в миллисекундах) timeout
(в версии 4.x):
.timeout(time)
Вот пример. Я загружу файл JSON без timeout
:
var url = "https://mysafeinfo.com/api/data?list=englishmonarchs&format=json";
d3.json(url)
.get(callback);
function callback(data) {
console.log(data)
}
<script src="https://d3js.org/d3.v4.min.js"></script>
Теперь тот же код, используя 1 миллисекунду в тайм-ауте (очень мало времени):
var url = "https://mysafeinfo.com/api/data?list=englishmonarchs&format=json";
d3.json(url)
.timeout(1)
.get(callback);
function callback(data) {
console.log(data)
}
<script src="https://d3js.org/d3.v4.min.js"></script>
Как вы видите, 1 миллисекунда слишком мало времени, чтобы получить файл, и обратный вызов будет возвращать null
, как и ожидалось.
timeout
вернет экземпляр запроса. Кроме того, не стоит редактировать ваше сообщение, чтобы задать другой вопрос. Как видите, я ответил на ваш вопрос. Но теперь, так как вы изменили его на другой, люди, которые посмотрят на мой ответ, найдут его неуместным ...