Closed Bug 1038631 Opened 10 years ago Closed 10 years ago

Promises should run before setTimeout

Categories

(Core :: DOM: Core & HTML, defect)

33 Branch
x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1013625

People

(Reporter: floitsch, Unassigned)

References

Details

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.3 Safari/537.36

Steps to reproduce:

var p = Promise.resolve();
// Give promise time to resolve.
window.setTimeout(function() {
  // Schedule 
  window.setTimeout(function() {console.log("foo"); }, 0);
  // Delay current function.
  var str = ""; for(var i = 0; i < 1000000; i++) { str += i; } glob = str;
  // Schedule on promise.
  p.then(function() {console.log("bar"); });
}, 10);


Actual results:

Prints:
"foo"
"bar"


Expected results:

Prints:
"bar"
"foo"

Functions scheduled through a resolved promise should be executed before setTimeouts.

Potentially related: issue 1013625
Blocks: 1013625
Component: Untriaged → DOM
Product: Firefox → Core
Confirmed in 33.0a1 (2014-07-20), Win 7
Status: UNCONFIRMED → NEW
Ever confirmed: true
Dependency is wrong way around.  I think this is exactly a duplicate of bug 1013625, in fact; it's caused by promise resolutions running off the same event queue as timeout handlers.
No longer blocks: 1013625
Depends on: 1013625
If there's a good way for me to help with this, please, let me know.  I assumed that promises running alongside timeouts was the intended procedure, and wrote a fair bit of code to work around that.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → DUPLICATE
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.