在等待请求 x 秒后取消 getJSON

Cancel getJSON after pending request x seconds

我正在使用此代码加载广告网络:

$.getJSON('https://server.ads.io/api/v1/decision/?publisher=xx-com&ad_types=text-v1&format=jsonp', function (data) {
    $('#ea-wrapper').html(data.html);
});
    

https://server.ads.io 加载时间过长的情况下,浏览器将等待广告 ad aeternum。我正在寻找的是一种在等待 3 秒没有响应后取消 getJSON 的方法。知道如何实现吗?

您可以手动 abort 我的评论中提到的请求。

您需要将 getJSON 设置为 variable 并在三秒后 setTimeout 中调用 variableabort 请求。

setTimeout(function(){
  //kill the request
   adRequest.abort()
}, 3000) //3 seconds

您可以尝试的最终代码如下:

var adRequest = $.getJSON('https://server.ads.io/api/v1/decision/?publisher=xx-com&ad_types=text-v1&format=jsonp', function(data) {
  $('#ea-wrapper').html(data.html);
});

setTimeout(function() {
  //kill the request
  addRequest.abort()
}, 3000)  //3 seconds

如果你想使用 $.ajax 你可以使用原生 timeout 方法

$.ajax({
  url: 'https://server.ads.io/api/v1/decision/?publisher=xx-com&ad_types=text-v1&format=jsonp',
  type: 'GET',
  dataType: 'jsonp',
  success: function(data) {
    $('#ea-wrapper').html(data.html);
  },
  timeout: 3000 //3 seconds
});