在这种情况下,.fail()或.timeout()更好吗?

时间:2012-06-22 21:17:12

标签: javascript jquery ajax mobile jquery-mobile

我需要处理我的$ .ajax()调用jQueryMobile项目的超时。做一些研究我发现了两种可行的方法。

.error() .fail()似乎是通用的:如果调用因任何原因失败,那么我会踢回错误堆栈,然后写入函数调用处理我需要的任何东西。

.timeout,似乎让我专门处理超时并指定一个我可以等待的时间段,如果我没有收到答案,那么呼叫会超时并引发错误。

我的问题是在移动环境中,通过.timeout()电话处理超时会更好吗?或者我应该使用 .error() .fail()函数覆盖所有调用并处理错误回调中的超时?

使用移动设备时,用户可能会走出覆盖区域,因此如果呼叫永远不会返回,我的直觉会说要实现超时功能。错误回调是否有内置超时?我想优雅地处理所有错误,所以似乎可能是一个快乐的媒介实现两者,并指定超时直接使用超时回调。

这里有什么我可能会遗失的吗?

1 个答案:

答案 0 :(得分:0)

超时事件将触发fail() - 函数!

您应该为$.ajax() - 请求设置超时值。

$.ajax({
     timeout: 15000 // 15sec
    });

如果ajax-request在这段时间内没有收到响应,它将超出.fail() - 函数中传递的函数。

$.ajax()
  .fail(function(jqXHR, textStatus, errorThrown) { 
        if(textStatus === 'timeout') {
             alert("$.ajax failed!"); 
        {
  });