Javascript:为同步REST API调用添加超时

时间:2013-04-04 20:15:52

标签: javascript jquery rest

我将调用一个进行同步REST API调用的函数。如果它在一段时间内没有返回,我想以某种方式超时该函数调用。我该怎么做?

callBlahService = function(args){
    // make actual rest api call
    $.ajax{
        // arguments
        async: false
    }
}

callBlahService({
    success:function(data){
        console.log("blah successful");
    },
    error: function(data){
        console.log("blah failed");
    }
});

2 个答案:

答案 0 :(得分:1)

看起来你正在使用JQuery。 timeout上有一个$.ajax设置应该使用:http://api.jquery.com/jQuery.ajax/

如果超出超时,将调用您的错误处理程序。

$.ajax({
    timeout: 1000,
    success: function(response) {},
    error: function(x, t, m) {
        if(t==="timeout") {
            alert("timed out!");
        } 
    }
});​

答案 1 :(得分:0)

  

<强>超时

     

输入:Number

     

设置请求的超时(以毫秒为单位)。这将覆盖使用$.ajaxSetup()设置的任何全局超时。超时时间从$ .ajax调用点开始;如果其他几个请求正在进行且浏览器没有可用的连接,则请求可能会在发送之前超时。 在jQuery 1.4.x及更低版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员可能会抛出异常。 仅限Firefox 3.0+ ,超时无法取消脚本和JSONP请求;即使脚本在超时期限后到达,脚本也会运行。   http://api.jquery.com/jQuery.ajax/