- From: Sean Hogan <shogun70@westnet.com.au>
- Date: Thu, 16 May 2013 20:04:48 +1000
- To: Boris Zbarsky <bzbarsky@MIT.EDU>
- CC: David Bruant <bruant.d@gmail.com>, Jonas Sicking <jonas@sicking.cc>, "public-script-coord@w3.org" <public-script-coord@w3.org>
On 16/05/13 2:43 PM, Boris Zbarsky wrote: > On 5/16/13 12:32 AM, Sean Hogan wrote: >> Future.accept() >> .then(function() { >> task1(); >> task2(); >> }) >> .then(function() { >> task3(); >> }); >> >> Assuming a **best-case scenario** > > Define "best-case"? What are the criteria? > > As far as how it behaves in practice, I believe some current UAs could > do a reflow between task1 and task2 there, and in fact might do it > while task1 is running. Most current UAs would definitely not do > anything between task1 and task2, since those run sync right after > another. > > The question is what happens with then(), right? It seems to me that > either it has to yield to the general event loop (and allow reflow to > happen sometimes) or it needs to be subject to things like slow-script > dialogs. Given that as I understand the point of this setup is to > encapsulate fundamentally async computations, yielding to the event > loop makes the most sense to me... > Surely the UA is free to queue (tasks such as) Future callback processing for immediate execution, and just pause the queue if it needs to yield. I could emulate a time-restricted micro-task queue in a few lines of JS. But the UA is in the better position to know when such a queue should be paused. > Note that just because reflow _can_ happen between task2 and task3 > doesn't mean it _will_. UAs do try to not reflow too often and all. > >> 3. What is the timing interval between task2 and task3? Milliseconds is >> fine. > > Seems like "milliseconds unless something else hogs the event loop" > should be trivial to achieve: you can get that right now with > setTimeout, which is not throttled for a bit, then throttles to 4ms. > Sorry - I meant an answer to the closest millisecond. That is, closest to 0ms, 1ms, 2ms ...
Received on Thursday, 16 May 2013 10:05:18 UTC