【问题标题】:Is .fail() or .timeout() better in this case?在这种情况下 .fail() 或 .timeout() 更好吗?
【发布时间】:2012-06-22 21:17:12
【问题描述】:

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

.error() .fail() 似乎是通用的:如果调用因任何原因失败,那么我将返回一个错误堆栈,然后编写函数调用来处理我需要的任何内容它到。

.timeout,似乎让我专门处理超时并指定我可以等待的时间段,如果我没有收到答案,则调用超时并引发错误。

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

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

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

【问题讨论】:

  • 请注意,.error 已贬值,请使用.fail
  • 我建议除了添加fail 处理程序之外还使用超时选项。
  • api.jquery.com/jQuery.ajax 提到了它,但它也在api.jquery.com/deferred.fail的延迟对象文档中进行了解释
  • 我从未听说过.timeout() 方法。你指的是什么?
  • 是的,.fail() 回调会在超时后执行。

标签: javascript jquery ajax mobile jquery-mobile


【解决方案1】:

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

您应该为$.ajax()-request 设置一个超时值。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2013-04-17
    • 2016-12-24
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多