KEMBAR78
Ember.js internals backburner.js and rsvp.js
Ember.js
backburner.js and rsvp.js
@gavinjoyce
A framework for creating
ambitious web applications
Need help building
something ambitious?

gavinjoyce@gmail.com
Need help building
something ambitious?

gavinjoyce@gmail.com
Need help building
something ambitious?

gavinjoyce@gmail.com
Need help building
something ambitious?

gavinjoyce@gmail.com
Need help building
something ambitious?

gavinjoyce@gmail.com
rsvp.js
backburner.js

rsvp.js
backburner.js
backburner.js

https://github.com/ebryn/backburner.js
backburner.js
backburner.js
● The Ember.js Run Loop
backburner.js
● The Ember.js Run Loop
○ Schedules Operations
backburner.js
● The Ember.js Run Loop
○ Schedules Operations
■ Data Bindings
backburner.js
● The Ember.js Run Loop
○ Schedules Operations
■ Data Bindings
■ Actions
backburner.js
● The Ember.js Run Loop
○ Schedules Operations
■ Data Bindings
■ Actions
■ UI Rendering
backburner.js
● The Ember.js Run Loop
○ Schedules Operations
■ Data Bindings
■ Actions
■ UI Rendering

○ Coalesces Operations
backburner.js
● The Ember.js Run Loop
backburner.js
● The Ember.js Run Loop
○ while(true) { … }
backburner.js
● The Ember.js Run Loop
○ while(true) { … }
backburner.js
● The Ember.js Run Loop
○ while(true) { … }
○ Triggered on ...
backburner.js
● The Ember.js Run Loop
○ while(true) { … }
○ Triggered on
■ UI events
backburner.js
● The Ember.js Run Loop
○ while(true) { … }
○ Triggered on
■ UI events
■ Ajax responses
backburner.js
● The Ember.js Run Loop
○ while(true) { … }
○ Triggered on
■ UI events
■ Ajax responses
■ Ember Data events
backburner.js

Run Loop Timing Demo
https://gist.github.com/GavinJoyce/6403776
backburner.js
● Queues - Ember.run.queues
○ sync - property bindings
○ actions - have access to resolved bindings
○ routerTransitions
○ render - DOM updates
○ afterRender - useful for wrapping plugins
○ destroy - object deletion
backburner.js

Run Loop Queue Demo
by Alex Matchneer

http://bit.ly/1afSx2W
backburner.js

backburner.js without Ember
https://github.com/ebryn/backburner.js#example-usage
rsvp.js
rsvp.js

https://github.com/tildeio/rsvp.js
rsvp.js

https://github.com/tildeio/rsvp.js
● A tool for organising asynchronous code
rsvp.js

https://github.com/tildeio/rsvp.js
● A tool for organising asynchronous code
● A tiny Promises/A+ implementation
○ http://promises-aplus.github.io/promises-spec/
rsvp.js
rsvp.js
A promise is a potential future value
rsvp.js
A promise is a potential future value
(thanks to Stefan Penner for use of following slides)
rsvp.js
A promise is a potential future value
(thanks to Stefan Penner for use of following slides)
Promises Scale

Real World Example: http://bit.ly/1gmLytY
Example use of promises in an Ember.js application:
Other talks
rsvp.js:
● Domenic Denicola: http://youtu.be/mZHO1ZTsoFk?t=42m17s
● Stefan Penner: http://youtu.be/mZHO1ZTsoFk?t=1h26m
backburner.js:
● Erik Bryn: http://www.youtube.com/watch?v=VuIFdXmi080&t=24m5s
Questions?

Ember.js internals backburner.js and rsvp.js