【发布时间】:2013-07-21 22:21:45
【问题描述】:
Fyi,我刚刚开始学习 jQuery Promise,所以在这里我可能会有些困惑。
无论如何,我有一个 AJAX 请求,我想根据响应的内容从完成的过滤器中拒绝它:
return doAJAXRequest().then(function (data) {
if (data.responseText == "YES") {
return doOtherAJAXRequest();
} else {
this.reject(data);
}
});
这并没有像我预期的那样工作:
Uncaught TypeError: Object #<Object> has no method 'reject'
如何根据它的响应使这个 Promise 失败?那可能吗?还是我只是对这里需要做什么感到困惑?
【问题讨论】:
-
尝试将 this.reject 更改为 $(this).reject。
-
@rtimoshenko 你确定这是对的吗?
-
@rtimoshenko 这似乎不起作用,我仍然遇到同样的错误。编辑:实际上它并不完全相同,但仍然非常相似。 (
Uncaught TypeError: Object [object Object] has no method 'reject') -
我的错误,我看到了“this”并做了一个假设。您是否将您的代码与文档进行了比较? api.jquery.com/deferred.then 您可以尝试使用全局 $.Deferred().reject。这是一个 jsFiddle:jsfiddle.net/pgBCD
-
@rtimoshenko 好吧,这似乎可行:jsfiddle.net/pgBCD/1