Bug Tracker

Ticket #11292 (closed bug: notabug)

Opened 2 years ago

Last modified 22 months ago

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.

Demo:  http://jsfiddle.net/2JFnM/

Change History

comment:1 Changed 2 years ago by sindresorhus

  • Keywords needsdocs added
  • Priority changed from undecided to low
  • Status changed from new to open
  • Component changed from unfiled to deferred

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.

comment:2 Changed 2 years 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 2 years 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.

comment:4 Changed 2 years ago by dmethvin

  • Milestone changed from 1.8 to 1.next

This can be fixed eventually, but not until oldIE bites the dust.

comment:5 Changed 22 months ago by mikesherov

  • Keywords needsdocs removed

comment:6 Changed 22 months ago by mikesherov

  • Status changed from open to closed
  • Resolution set to notabug
Note: See TracTickets for help on using tickets.