2

deferred.fail() 页面

描述:添加要在 Deferred 对象被拒绝时调用的处理程序。

和例子:

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

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

我的问题:

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

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

谢谢。

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

4

1 回答 1

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

您可以使用 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') }
);
于 2013-04-03T06:57:16.607 回答