如何为网站设置 JSON API 超时?

Posted

技术标签:

【中文标题】如何为网站设置 JSON API 超时?【英文标题】:How to set JSON API timeout for a website? 【发布时间】:2020-05-19 16:29:46 【问题描述】:

我已经在 *** 网站上搜索过这个解决方案,但我找不到任何适合我的问题的解决方案。

我正在请求 API .. 但是当该 api 网站离线时,它需要中止/超时请求。

知道怎么做吗?

这是我的脚本:

function getStreamDetails() 
    $.ajaxSetup( cache: false );
    $.getJSON('https://mywebsite.com/streaminfo.php', function(data) 
        var artist = data['song'];
        var title = data['song'];
        var artistClean = artist.length > 50 ? artist.substring(0, 50) + "..." : artist;

        var music = artistClean;
        var formattedMusic = music.replace(/;/g, ', ');
        var dj = data['live'] == '' ? 'Auto DJ' : data['live'];

        $('#dj').html(dj);
        $('#listeners').html(data['Plays']);
        $('#song').html(formattedMusic);
        $('#song').attr('data-original-title', formattedMusic);
    );


setInterval(getStreamDetails, 60000);
getStreamDetails();

希望有人可以帮助我:))

【问题讨论】:

***.com/questions/4138470/jquery-getjson-with-timeout 1.不要使用setInterval(),而是使用setTimeout()。要检测超时,请使用 fail() 承诺。 @MrD 我已经尝试过了,但不适合我的代码。 您应该在收到 API 的响应后再次调用 setTimeout(无论其状态如何)。 【参考方案1】:

看看@下面的文章:https://it.toolbox.com/blogs/edmonbegoli/adjusting-jquery-json-timeouts-101508

我会引用there:

如果您正在使用 jQuery 进行 JSON AJAX 调用,并且您正在 更改超时值时遇到错误[...] AJAX 调用可能会有所帮助 缓解问题。

如果你正在使用 $.getJSON 方法,你 会注意到没有指定超时值的选项。 因此,您有两个选择: 1.将$.getJSON,只是一个包装方法,改为$.ajax。所以,从

`$.getJSON("http://someurl", //Gives us parsed JSON automatically 
 somparam: params , //The params for the query resultsHandler 
//The callback function that handles JSON results ); 

$.getJSON 调用更改为$.ajax

$.ajax(url:"http://someurl", dataType:'json', data: "someparam=" +
params,timeout: 7000, success:resultsHandler ) 

注意值 超时为 7000 或 7 秒。

更多详情请咨询$.ajax documentation。

    另一种选择是在调用 getJSON 之前设置全局 AJAX 参数,然后将所有 getJSON 和使用这些设置的 AJAX 调用。
$.ajaxSetup( timeout: 7000 );
$.getJSON("http://someurl", //Gives us parsed JSON automatically 
somparam: params , //The params for the query resultsHandler //The
callback function that handles JSON results ); 

更多详情请见$.ajaxSetup documentation。

【讨论】:

以上是关于如何为网站设置 JSON API 超时?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 cassandra 设置读取请求超时

如何为 mysql 设置 ActiveRecord 查询超时?

我应该如何为其 API 使用 MailChimp JSON Schema?

如何为默认的swagger android客户端设置连接和套接字超时

如何为 AndroidAsync websockets 设置超时?

如何为查询执行设置语句超时