Ticket #11292 (closed bug: notabug)
Error During Done Function on a Promise Is Skipped on Subsequent Runs
| Reported by: | jrduncans | Owned by: | |
|---|---|---|---|
| Priority: | low | Milestone: | 1.next |
| Component: | deferred | Version: | 1.7.1 |
| Keywords: | Cc: | ||
| Blocking: | Blocked by: |
Description
Having an error in a .done() callback function seems to permanently break the state of a Deferred, in a way that success does not. The documentation of Deferred does not cover error handling within callbacks, so it's not clear if this is by design or not.
Change History
comment:1 Changed 16 months ago by sindresorhus
- Keywords needsdocs added
- Priority changed from undecided to low
- Status changed from new to open
- Component changed from unfiled to deferred
comment:2 Changed 14 months ago by dmethvin
- Milestone changed from None to 1.8
Dean Edwards documented a way of using synthetic events as callbacks to prevent this problem, but I don't know if it can be applied. The use of a propertychange handler on documentElement seems like it might pose some performance problems.
http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/
Let's explore for 1.8 and decide whether it can be fixed or if we should just document current behavior.
comment:3 Changed 14 months ago by jaubourg
Eveything is said here: http://bugs.jquery.com/ticket/11193#comment:3
In an ideal world, we'd be able to use try/finally but, because of IE, we can't.
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

I think the consensus is that you should handle your own exceptions. jQuery should not hide it away.
See the duplicates for more info and discussion.
Duplicates: #11207, #11193, #9033
Leaving it open so that it can be documented.