awesome-promises
by wbinnssmith
A curated list of useful resources for JavaScript Promises
AI summary
Promise repository
A curated collection of resources and implementations for working with JavaScript Promises
- stars
- 1.6K
- forks
- 124
- watching
- 40
- awesome lists
- 3
- entries
- 81
What's in the list
81 links in 8 sections, with live GitHub stats.activeno commit in 2y
Resources, Blogs, and Books / For beginners
Promise Cookbook
The why, what, and how. "A brief introduction [...] primarily aimed at frontend developers"
- Promises for Asynchronous Programming
Chapter from
You Don't Know JS: Promises
Chapter from
- JavaScript Promises: an Introduction
Basics of JavaScript's native promise implementation
- JavaScript with Promises
from O'Reilly. Short and to-the-point. Uses native and bluebird
Promise it won't hurt
An interactive workshop
- ES6 Kata Promises
Promises Katas :
- An Incremental Tutorial on Promises
An FAQ styled tutorial for beginners
Resources, Blogs, and Books / Deep Dive
Promise Fun
@sindresorhus's notes, patterns, and solutions to common Promise problems
- You're Missing the Point of Promises
Promises are much more than callback aggregation, and that jQuery's implementation (prior to 3.0) isn't enough
- We have a problem with promises
"Many of us are using promises without really understanding them."
Promise anti-patterns
Common misuses and how to avoid them
- Promise anti-patterns (2)
Another set of promises anti-patterns
- Promise Ponderings, (Anti-)Patterns, and Apologies
Promise behaviour demonstrated and explained by common questions and their answers
- Javascript Promises...In Wicked Detail
Recreate the promise implementation
- Writing Promise-Using Specifications
"This document gives guidance on how to write specifications that create, accept, or manipulate promises"
Resources, Blogs, and Books / References
Fates and States
Quick definitions of possible states
- Promisees
Promise visualization playground for the adventurous
Promises/A+ Implementations (ES6/ES2015 compatible) / Strict Implementations
pinkie
Ponyfill. Node-oriented, but . small implementation
native-promise-only
Polyfill. Browser and node-compatible
es6-promise
Opt-in polyfill. A strict-spec subset of rsvp.js
lie
Small, browserifyable with an opt-in polyfill
Promises/A+ Implementations (ES6/ES2015 compatible) / Implementations with extras
bluebird
Fully featured, extremely performant. Long stack traces & generator/coroutine support
creed
Hyper performant & full featured like Bluebird, but FP-oriented. Coroutines, generators, promises, ES2015 iterables, & fantasy-land spec
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 , and additions
when.js
Packed with control flow, functional, and utility methods
Promises/A+ Implementations (ES6/ES2015 compatible) / Fallbacks
- native-or-bluebird
Helps transition to completely native
pinkie-promise
Use native, or fall back to . Great for node library authors
any-promise
Loads the first available implementation. Safe for browserify
Convenience Utilities / sindresorhus's many Promise utilities (see notes)
delay
Delay a promise a specified amount of time
pify
Promisify ("denodify") a callback-style function
loud-rejection
Make unhandled promise rejections fail loudly instead of the default silent fail
hard-rejection
Make unhandled promise rejections fail hard right away instead of the default silent fail
p-queue
Promise queue with concurrency control
p-break
Break out of a promise chain
p-lazy
Create a lazy promise that defers execution until or is called
p-defer
Create a deferred promise
p-if
Conditional promise chains
p-tap
Tap into a promise chain without affecting its value or state
p-map
Map over promises concurrently
p-all
Run promise-returning & async functions concurrently with optional limited concurrency
p-limit
Run multiple promise-returning & async functions with limited concurrency
p-times
Run promise-returning & async functions a specific number of times concurrently
p-catch-if
Conditional promise catch handler
p-time
Measure the time a promise takes to resolve
p-log
Log the value/error of a promise
p-filter
Filter promises concurrently
p-settle
Settle promises concurrently and get their fulfillment value or rejection reason
p-memoize
Memoize promise-returning & async functions
p-whilst
Calls a function repeatedly while a condition returns true and then resolves the promise
p-throttle
Throttle promise-returning & async functions
p-debounce
Debounce promise-returning & async functions
p-retry
Retry a promise-returning or async function
p-wait-for
Wait for a condition to be true
p-timeout
Timeout a promise after a specified amount of time
p-race
A better
p-try
ponyfill - Starts a promise chain
p-finally
ponyfill - Invoked when the promise is settled regardless of outcome
p-any
Wait for any promise to be fulfilled
p-some
Wait for a specified number of promises to be fulfilled
p-pipe
Compose promise-returning & async functions into a reusable pipeline
p-each-series
Iterate over promises serially
p-map-series
Map over promises serially
p-reduce
Reduce a list of values using promises into a promise for a value
p-props
Like but for and
Convenience Utilities / Others
promise-method
Standalone . Turn a synchronously-returning method into a promise-returning one
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
co
Like and , but supports thunks too
- lie-fs
Promise wrappers for Node's FS API
promise-do-until
Calls a function repeatedly until a condition returns true and then resolves the promise
promise-do-whilst
Calls a function repeatedly while a condition returns true and then resolves the promise
promise-semaphore
Push a set of work to be done in a configurable serial fashion
promise-nodeify
Standalone method which calls a Node-style callback on resolution or rejection
Nothing in this list matches your filter.
Featured in 3 awesome lists
Each link jumps to the spot where the list mentions awesome-promises.