×

"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.

  1. Praise for Async JavaScript
  2. Dedication
  3. Acknowledgments
  4. Preface
  5. Who is this book for?
  6. Code style in this book
  7. A word on “altJS”
  8. 1 The JavaScript Event Model
  9. 1.1 Now or later
  10. 1.2 When is a function async?
  11. 1.3 Async primitives
  12. 1.4 Nested callbacks
  13. 1.5 Exceptions in callbacks
  14. 1.6 Tools for taming JavaScript
  15. 2 Distributed Events
  16. 2.1 PubSub
  17. 2.2 Evented models
  18. 2.3 Custom jQuery events
  19. 2.4 Piping events with LucidJS
  20. 3 Promises and Deferreds
  21. 3.1 A very brief history of Promises
  22. 3.2 Making Promises
  23. 3.3 Passing arguments to callbacks
  24. 3.4 Progress notifications
  25. 3.5 Animation Promises
  26. 3.6 Combining Promises with when
  27. 3.7 Binding to the future with pipe
  28. 3.8 jQuery vs. Promises/A
  29. 3.9 Replacing callbacks with Promises
  30. 4 Flow Control with Async.js
  31. 4.1 The async ordering problem
  32. 4.2 Async collection methods
  33. 4.3 Chaining async functions
  34. 4.4 Parallelizing async functions
  35. 4.5 Dynamic async queueing
  36. 4.6 On autopilot
  37. 4.7 Minimalist flow control with Step
  38. 4.8 Other flow control libraries
  39. 5 Multi-threading with Workers
  40. 5.1 Web Workers
  41. 5.2 Node Workers with cluster
  42. 6 Async Problems and Solutions
  43. 6.1 Problem: Where’d this go?
  44. 6.2 Problem: Retrying async tasks
  45. 6.3 Problem: Testing async code
  46. 6.4 Problem: Aggregating events
  47. 6.5 Problem: Handling requests
  48. 6.6 Problem: Ajax spaghetti