"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.
......(更多)
Trevor is a freelance web developer, author, and speaker living in Cambridge, MA. His first book, CoffeeScript: Accelerated JavaScript Development, was published by PragProg.
......(更多)
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 this go?
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
......(更多)
在基于回调函数的API中使用Promise对象最直接的方法是,生成一个Deffered对象并传递其触发器函数作为API的回调参数。
不管API形态像什么, 始终要记住的是, 只能在回调内部处理源于回调的异步错误
......(更多)