About the Book
"Async JavaScript is the first full book I've seen dedicated to a key topic in JavaScript development today: how to deal with concurrency and concurrent tasks without going crazy! For the sake of your sanity, check this out."
—Peter Cooper, creator of JavaScript Weekly
JavaScript is a single-threaded language living in a multimedia, multi-tasking, multi-core world. Even experienced JavaScripters sometimes find themselves overwhelmed as complex apps grow into a tangled web of callbacks.
With Async JavaScript, you'll learn about:
- Event scheduling
- The PubSub pattern
- Promises and Deferred objects
- Flow control with Async.js
- Recipes for common async scenarios
- Multi-threading with Web Workers
- AltJS languages
and more, with examples tailored to jQuery and Node.js.
Table of Contents
- Praise for Async JavaScript
- Dedication
- Acknowledgments
- Preface
- Who is this book for?
- Code style in this book
- A word on “altJS”
- 1 The JavaScript Event Model
- 1.1 Now or later
- 1.2 When is a function async?
- 1.3 Async primitives
- 1.4 Nested callbacks
- 1.5 Exceptions in callbacks
- 1.6 Tools for taming JavaScript
- 2 Distributed Events
- 2.1 PubSub
- 2.2 Evented models
- 2.3 Custom jQuery events
- 2.4 Piping events with LucidJS
- 3 Promises and Deferreds
- 3.1 A very brief history of Promises
- 3.2 Making Promises
- 3.3 Passing arguments to callbacks
- 3.4 Progress notifications
- 3.5 Animation Promises
- 3.6 Combining Promises with
when - 3.7 Binding to the future with
pipe - 3.8 jQuery vs. Promises/A
- 3.9 Replacing callbacks with Promises
- 4 Flow Control with Async.js
- 4.1 The async ordering problem
- 4.2 Async collection methods
- 4.3 Chaining async functions
- 4.4 Parallelizing async functions
- 4.5 Dynamic async queueing
- 4.6 On autopilot
- 4.7 Minimalist flow control with Step
- 4.8 Other flow control libraries
- 5 Multi-threading with Workers
- 5.1 Web Workers
- 5.2 Node Workers with
cluster - 6 Async Problems and Solutions
- 6.1 Problem: Where’d
thisgo? - 6.2 Problem: Retrying async tasks
- 6.3 Problem: Testing async code
- 6.4 Problem: Aggregating events
- 6.5 Problem: Handling requests
- 6.6 Problem: Ajax spaghetti