jQuery延迟优势?

jQuery延迟优势?,jquery,Jquery,vs 对不起,我看不出有什么好处 你能解释一下吗 或者你能给我举个例子,说明前者不能由后者来完成……?首先,第二个代码块在语法上甚至是无效的。我认为这是第一个:P 但非常严肃地说: 这只是实现相同最终结果的不同语法。一个直接的优点是,您可以为每个结果连接多个功能,并使用延迟: $.ajax("example.php", success: function () { alert(''); }, error: functio

vs

对不起,我看不出有什么好处

你能解释一下吗


或者你能给我举个例子,说明前者不能由后者来完成……?

首先,第二个代码块在语法上甚至是无效的。我认为这是第一个
:P


但非常严肃地说:

这只是实现相同最终结果的不同语法。一个直接的优点是,您可以为每个结果连接多个功能,并使用延迟:

  $.ajax("example.php",

      success: function ()
      {
          alert('');
      },
      error: function ()
      {
          alert('');
      },
      complete: function ()
      {
          alert('');
      }
  );
否则,您必须这样做:

$.get("example.php").done(function ()
{
    alert("success 1");
}).done(function ()
{
    alert("success 2");
});

其他优势,引自

  • 延迟非常适合于任务可能异步运行,也可能不异步运行,并且您希望从代码中抽象出该条件
  • …正在从多个源获取数据。在下面的示例中,我将获取现有应用程序中使用的多个独立JSON模式对象,以便在客户端和REST服务器之间进行验证。在这种情况下,我不希望浏览器端应用程序在加载所有模式之前就开始加载数据。$。when.apply().then()非常适合于此
  • 可以使用延迟的互斥来代替互斥。这与多个ajax使用场景基本相同

我认为延迟对象只是jQuery发展过程中的又一个步骤

在它们之前,只能将回调传递给配置对象中的
$.ajax
。有了延迟器,您现在可以使用它们处理所有异步甚至同步执行,从而实现更统一的接口。这就是优点:通过统一简化

在上引入
时也发生了类似的情况。与
绑定相比,
上的
没有真正的优势,但它简化了事件处理,因为它结合了
绑定
实时
委托
的功能。结果是一个统一的事件处理API。或者我使用了两次相同的函数,
on
,或者
bind
delegate

以类似的方式,如果我想进行两个依赖的Ajax调用,我可以使用两个
$.Ajax
调用加上
$.when
,这是我所熟悉的,与进行一个或多个调用没有任何区别,或者我将一个调用嵌套在另一个调用中,这需要我以不同的方式思考执行过程


延迟对象是异步代码执行的统一、通用方法。这并不意味着应该删除以前添加回调的方法,它会破坏很多代码。除此之外,它更接近于原始
XMLHTTPRequest
对象的方法,有些人可能更喜欢这种方法。

延迟对象的主要好处是可以传递它们,因此对于ajax执行代码不知道还有谁对回调感兴趣或者不想硬编码回调的复杂情况,它可以将延迟对象传递给感兴趣的插件/模块代码

e、 g

var defer=$.get(“example.php”);

对于(var i=0;iShrug…我想前者对某些人来说可能更像jQuery-y。我不认为这里有什么比风格上的优势更多。仍然很难看出任何区别。因为当我运行“example.php”时,我在等待答案(成功或不成功)。我在寻找一些优势的硬证据…:)查看我的编辑以了解更喜欢的案例。不喜欢延迟API吗?不要使用它。我刚刚看到了这一行的示例
returncache[val]| |$.ajax(“/foo/”,…
让我意识到我可以在callbackFunction中使用
when
,而不管响应是来自缓存还是来自ajax调用…很好。谢谢。延迟对象只用于异步调用吗?我仍然不知道何时我必须在
when
时使用
我看到了一些示例,这些示例允许您在不使用的情况下执行
然后
ode>何时
…你能解释一下吗?不,这就是为什么我把它改为“异步甚至同步执行”…我只是经常以异步方式使用它,我认为这是它们的主要用途。
然后
是每个延迟对象的方法,因此无论何时有这样的对象,都可以使用它。
只返回另一个延迟或承诺对象时。
ajax\u Observators中的对象是什么?ajax\u Observators可以是任何avascript对象有一个
hook
函数,我只是给出了一个简单的例子,延迟会导致代码更干净、更灵活
$.get("example.php").done(function ()
{
    alert("success 1");
}).done(function ()
{
    alert("success 2");
});
function done1()
{
    alert('success 1');
}
function done2()
{
    alert('success 2');
}

$.ajax('example.php',
{
    success: function ()
    {
        done1.apply(this, arguments);
        done2.apply(this, arguments);
    }
});
var defer = $.get("example.php");
for(var i=0; i<ajax_observers.length;i++){
    ajax_observers[i].hook(defer)
}