0

我将调用一个进行同步 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");
    }
});
4

2 回答 2

1

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

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

$.ajax({
    timeout: 1000,
    success: function(response) {},
    error: function(x, t, m) {
        if(t==="timeout") {
            alert("timed out!");
        } 
    }
});​
于 2013-04-04T20:22:23.607 回答
0

超时

类型:数字

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

于 2013-04-04T20:19:40.797 回答