W3C home > Mailing lists > Public > public-script-coord@w3.org > April to June 2013

Re: Future feedback

From: Alex Russell <slightlyoff@google.com>
Date: Thu, 9 May 2013 02:51:47 +0100
Message-ID: <CANr5HFVaaEhRee8q44G==WeB3EV4ZStHYF84XyL17_xkPqQ1yQ@mail.gmail.com>
To: Boris Zbarsky <bzbarsky@mit.edu>
Cc: "public-script-coord@w3.org" <public-script-coord@w3.org>
On Wednesday, May 8, 2013, Boris Zbarsky wrote:

> On 5/7/13 9:27 PM, Sean Hogan wrote:
>
>> a. Queueing a task - that is, asynchronously executing a function
>>
>
> setTimeout does this, no?  If we really feel that the minimum 4ms delay it
> imposes is not OK, there have been proposals for a setImmediate, though I'd
> like to see some indication that it won't be abused like setTimeout has
> been.
>

My polyfill uses Object.observe() & Mutation Observers to get shorter
callback timeouts where that's possible, falling back to setTimeout
elsewhere. I'm not sure we really need to do any more than that.


>  b. Isolating a task - that is, synchronously executing a function in
>> such a way that errors are detected but not prevented from going to the
>> console
>>
>
> This is also already possible, as far as I can tell, modulo a slight bug
> in Chrome.  Consider this testcase:
>
> <script>
>   function isolate(f) {
>     try {
>       f();
>     } catch (e) {
>       setTimeout(function() { throw e; }, 0);
>     }
>   }
>   function g() {
>     nonexistent();
>   }
>   isolate(g);
> </script>
>
> The "nonexistent()" call is on line 10; the throw statement on line 6. The
> question is what goes to the console.
>
> In Firefox, I get: ReferenceError: nonexistent is not defined @
> file:///whatever.html:10
>
> In Chrome I get: Uncaught ReferenceError: nonexistent is not defined.
> whatever.html:10 (though only if the console is open before I run the
> testcase; if I open it after running the testcase, Chrome gets the line
> number wrong and claims it was on line 6).
>
> In Opera I get:  Uncaught exception: ReferenceError: Undefined variable:
> nonexistent
> Error thrown at line 6, column 43 in <anonymous function>() in
> whatever.html:
>     throw e;
> Error initially occurred at line 10, column 4 in g() in whatever.html:
>     nonexistent();
>
> In Safari I get: ReferenceError: Can't find variable: nonexistent.
> whatever.html:10
>
> In IE9 I get:  SCRIPT5009: 'nonexistent' is undefined
> whatever.html, line 10 character 5
>
> If synchronous reporting to the console is desired, that should also be
> possible, actually, like so:
>
>   var reporter = document.createElement("div");
>   function isolate(f) {
>     try {
>       f();
>     } catch (e) {
>       reporter.onclick = function() { throw e; };
>       reporter.dispatchEvent(new Event("click"));
>     }
>   }
>
> (with createEvent and whatnot as needed for older UAs).
>
> -Boris
>
>
Received on Thursday, 9 May 2013 01:52:14 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:37:49 UTC