Skip to content

Provide a way to defer execution of functions #5691

@justinfagnani

Description

@justinfagnani
Contributor

It's often a requirement to defer a function: in order to complete a Future asynchronously, or to wait for the browser to paint.

Issues 3356 and 2705 can be resolved with an ability to defer a function.

window.setInterval(0, f) (and therefore new Timer(f, 0)) isn't sufficient because it does not invoke the callback on the current or next event loop, but waits at least 4ms (html5 spec) or longer depending on the browser.

IE 10 is adding setImmediate() to handler this and it can be emulated with postMessage.

GWT allows a command to be deferred either till the end of the current event loop, or to the beginning of the next, which follows layout/paint.

This function should live in the same library as Future so that Future can automatically defer Future.complete()

Activity

justinfagnani

justinfagnani commented on Oct 5, 2012

@justinfagnani
ContributorAuthor

Marked this as blocking #3356.

lrhn

lrhn commented on Oct 10, 2012

@lrhn
Member

Added Library-Isolates label.

DartBot

DartBot commented on Oct 30, 2012

@DartBot

This comment was originally written by ross.m....@gmail.com


One thing I always liked in GWT was the Scheduler for this:

http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/core/client/Scheduler.html

I'm not saying to take that Java class 'as is' - but the functionality / granularity is great.

DartBot

DartBot commented on Nov 4, 2012

@DartBot

This comment was originally written by ladicek@gmail.com


I think this is actually a duplicate of issue #3260.

dgrove

dgrove commented on Jan 11, 2013

@dgrove
Contributor

Added Library-Isolate label.

dgrove

dgrove commented on Jan 11, 2013

@dgrove
Contributor

Removed Library-Isolates label.

andersjohnsen

andersjohnsen commented on Oct 15, 2013

@andersjohnsen

We've added 'scheduleMicrotask' to dart:async to do exactly this. See http://api.dartlang.org/docs/bleeding_edge/dart_async.html#scheduleMicrotask.

Note that some implementations still use Timer.run(...) to implement this, thus still delaying the execution unnecessarily long. This is currently being worked on (there are individual bugs for that).


Added Fixed label.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-core-librarySDK core library issues (core, async, ...); use area-vm or area-web for platform specific libraries.library-isolate

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @andersjohnsen@justinfagnani@dgrove@lrhn@DartBot

        Issue actions

          Provide a way to defer execution of functions · Issue #5691 · dart-lang/sdk