【问题标题】:What does 'rejected' mean for Deffered objects other than jqXHRs?对于 jqXHR 以外的延迟对象,“拒绝”是什么意思?
【发布时间】:2013-04-04 13:57:28
【问题描述】:

来自deferred.fail()page

说明:添加延迟对象时要调用的处理程序 被拒绝。

还有例子:

$.get("test.php")
.done(function(){ alert("$.get succeeded"); })
.fail(function(){ alert("$.get failed!"); });

我们知道,我们可以创建var someObject = $.Deferred();

我的问题:

  • 如果 Deferred 不是 jqXHR,我们如何“拒绝”它?

  • jqXHR以外的Deferred对象如何实现deferred.fail()

谢谢。

是的,我知道我的英语不好。

【问题讨论】:

    标签: jquery jquery-deferred jqxhr


    【解决方案1】:

    当调用.reject().rejectWith() 时,延迟对象被拒绝。

    这是一个例子:

    var deferred = $.Deferred();
    deferred
      .done(function() { console.log('done') })
      .fail(function() { console.log('failed') });
    
    deferred.resolve(); // <-- will write 'done' to console
    deferred.reject();  // <-- will write 'failed' to console
    

    您可以使用延迟来使异步函数的行为类似于$.get()。例如setTimeout:

    function MyTimeout() {
      var deferred = $.Deferred();
    
      setTimeout(function() {
        // as a demo, this will reject the deferred half the time
        if (Math.random() < 0.5)
          deferred.reject();
        else
          deferred.resolve();
      }, 2000);
      return deferred.promise();
    }
    
    MyTimeout()
      .done(function() { console.log('done') })
      .fail(function() { console.log('failed') });
    

    最后一条语句也可以写成:

    MyTimeout().then(
      function() { console.log('done') },
      function() { console.log('failed') }
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-19
      • 2011-06-12
      相关资源
      最近更新 更多