jquery - 'rejected' 对于 jqXHR 之外的延迟对象意味着什么?

标签 jquery jquery-deferred jqxhr

来自deferred.fail() page :

Description: Add handlers to be called when the Deferred object is rejected.

以及示例:

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

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

我的问题:

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

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

谢谢。

是的,我知道我的英语很糟糕。

最佳答案

.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

您可以使用 deferreds 使异步函数的行为类似于 $.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') }
);

关于jquery - 'rejected' 对于 jqXHR 之外的延迟对象意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15780446/

相关文章:

javascript - jQuery:防止 child 继承 parent 的属性?

javascript - 如何在 d3.js 中对路径上的多个圆圈进行动画处理?

jquery - 大型可拖动项目放入小型可转换容器中?

javascript - 在 jQuery 中取消延迟 promise

javascript - Rails 远程 JavaScript

jquery:当您将延迟对象传递到 "then"时会发生什么?

jquery - 了解 Deferred.pipe()

javascript - 使用 JavaScript 上传文件 - 如何获得更频繁的 onprogress 事件

javascript - 如何访问它从 success() 返回的返回的 jQuery jqxhr 对象的属性

Ajax 无法在 IE 上使用 SSL 错误代码 12019