javascript - 如何在d3 xhr发送请求中指定超时

标签 javascript http d3.js xmlhttprequest timeout

我想设置一个超时值,这样如果服务器在特定时间范围内没有响应,那么 UI 应该继续前进而不是等待响应。到目前为止,我使用了以下语法,但它不限制 UI 监听指定时间。

      d3.xhr(my_url)
        .header('Content-Type', 'text/xml')
        .header('timeout', 2000)
        .send(this.my_method, my_xmlData, function(error, data) {
        }

我读了here d3 xhr 现在支持超时功能。谁能告诉我如何正确使用它?

最佳答案

只需将时间(以毫秒为单位)传递给timeout(在版本 4.x 中):

.timeout(time)

这是一个例子。我将在没有 timeout 的情况下加载 JSON 文件:

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

关于javascript - 如何在d3 xhr发送请求中指定超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46924473/

相关文章:

javascript - 继承倒置 HOC 无法将类作为函数调用

javascript - 何时以及如何仅在 promise 完成时返回 http 响应?

javascript - 使用 jquery 在 nvd3 中触发图例单击事件?

javascript - D3.js 基于节点个体半径/直径的自动字体大小调整

d3.js - 如何调整 dc.js 和 crossfilter 的分箱?这是性能瓶颈吗?

javascript - 如何从 youtube 获取第一帧作为照片?

javascript - 如何触发 parent 的功能?

javascript - 如何在 d3 v4 中使用 d3.transform?

http - 是否应该使用 HTTP 重定向来纠正误导性 URL

java - 如何强制 HTTP 请求连接器使用特定的内容类型?