原文 https://github.com/wbinnssmith/awesome-promises
整理了一些关于promise相关的文档
Awesome Promises
A curated list of useful resources for JavaScript Promises
Inspired by the awesome list thing. Not to be confused with other awesome promises like “I promise you a million dollars” or "I promise you’ll stay fit and never have to go to the gym again".
Resources, Blogs, and Books
- caniuse promises
- Promise Cookbook The why, what, and how. "A brief introduction […] primarily aimed at frontend developers".
- You’re Missing the Point of Promises @domenic shows that promises are much more than callback aggregation, and that jQuery’s implementation (prior to 3.0) isn’t enough.
- JavaScript Promises: There and back again Basics of JavaScript’s native promise implementation.
- Fates and States Quick definitions of possible states.
- Promise anti-patterns Common misuses and how to avoid them.
- JavaScript with Promises from O’Reilly. Short and to-the-point. Uses native and bluebird.
Promises/A+ Implementations (ES6/ES2015 compatible)
Strict Implementations
These implement no more or less than the es6 spec. They make great polyfills and are exceptionally compatible with native promises.
- pinkie Ponyfill. Node-oriented, but browserifyable. Extremely small implementation.
- native-promise-only Polyfill. Browser and node-compatible.
- es6-promise Opt-in polyfill. A strict-spec subset of rsvp.js.
Implementations with extras
All of these provide more features than the language yet remain compatible. Node + Browsers for all.
- bluebird - Fully featured, extremely performant. Long stack traces & generator/coroutine support.
- rsvp.js - Lightweight with a few extras. Compatible down to IE6!
- Q - One of the original implementations. Long stack traces and other goodies.
- then/promise - Small with
nodeify
,denodify
anddone()
additions. - when.js - Packed with control flow, functional, and utility methods.
Fallbacks
- native-or-bluebird - Helps transition to completely native.
- pinkie-promise - Use native, or fall back to
pinkie
. Great for node library authors. - any-promise - Loads the first available implementation. Safe for browserify.
Convenience Utilities
Native and strictly spec-compliant promises are awesome for compatibility, future-proofness, library authors, and browsers. However, libraries like bluebird patch goodies onto the Promise
constructor and prototype. Solution? tiny modules of course!
-
pify - Promisify (“denofify”) a callback-style function.
-
promise-every - Standalone
bluebird.every
. Execute one after the other sequentially. -
promise-filter - Standalone
bluebird.filter
. Filter an array to a promise. -
promise-map - Standalone
bluebird.map
. Map an array to a promise. -
promise-method - Standalone
bluebird.method
. Turn a synchronously-returning method into a promise-returning one. -
promise-props - Standalone implementation of bluebird’s
bluebird.props
or rsvp’sRSVP.hash
-
promise-reduce - Standalone
bluebird.reduce
. Reduce an array to a promise. -
promise-some - Standalone
bluebird.some
. Check if an element passes the predicate, return a promise. -
promise-try - Standalone
bluebird.try
. Execute a synchronously-returning function and return a promise. -
is-promise - Determine if something looks like a Promise.
-
sprom - Resolve when a stream ends. Optional buffering (be careful with this!)
-
task.js - Write async functions in a blocking style using promises and generators. Like
bluebird.coroutine
. -
co - Like
task.js
andbluebird.coroutine
, but supports thunks too.