Skip to content
51

Awesome Promises

A curated list of useful resources for JavaScript Promises

1.8k stars121 forks80 entriesLast push Dec 15, 2023 (2 years ago)License CC0-1.0

This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.

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 Exploring ES6

You Don't Know JS: Promises

Chapter from You Don't Know JS: Async & Performance

In 12 listsDetails

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 nodeschool workshop

In 2 lists

ES6 Kata Promises

Promises Katas : Basics

In 4 lists

ES6 Promises in Depth

An Incremental Tutorial on Promises

An FAQ styled tutorial for beginners.

In 2 lists

Resources, Blogs, and Books >Deep Dive

Promise Fun

@sindresorhus's notes, patterns, and solutions to common Promise problems

In 2 listsDetails

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.

In 5 listsDetails

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"

Async functions - making promises friendly

Resources, Blogs, and Books >References

Promises/A+ specification

caniuse promises

Compare feature implementations and limitations across desktop & mobile browsers.

In 4 lists

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 browserifyable. Extremely small implementation.

native-promise-only

Polyfill. Browser and node-compatible.

es6-promise

Opt-in polyfill. A strict-spec subset of rsvp.js.

In 3 lists

lie

Small, browserifyable with an opt-in polyfill.

Promises/A+ Implementations (ES6/ES2015 compatible) >Implementations with extras

Promise anti-patterns

Common misuses and how to avoid them.

In 5 listsDetails

creed

Hyper performant & full featured like Bluebird, but FP-oriented. Coroutines, generators, promises, ES2015 iterables, & fantasy-land spec.

In 2 lists

rsvp.js

Lightweight with a few extras. Compatible down to IE6!

Q

One of the original implementations. Long stack traces and other goodies.

In 3 lists

then/promise

Small with nodeify, denodify and done() additions.

when.js

Packed with control flow, functional, and utility methods.

In 2 lists

Promises/A+ Implementations (ES6/ES2015 compatible) >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 >sindresorhus's many Promise utilities (see notes)

delay

Delay a promise a specified amount of time.

In 5 listsDetails

pify

Promisify ("denodify") a callback-style function.

In 6 listsDetails

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

In 2 lists

p-break

Break out of a promise chain

In 2 lists

p-lazy

Create a lazy promise that defers execution until .then() or .catch() is called

In 2 lists

p-defer

Create a deferred promise

In 2 lists

p-if

Conditional promise chains

In 2 lists

p-tap

Tap into a promise chain without affecting its value or state

In 2 lists

p-map

Map over promises concurrently

In 4 listsDetails

p-all

Run promise-returning & async functions concurrently with optional limited concurrency

In 2 lists

p-limit

Run multiple promise-returning & async functions with limited concurrency

In 2 lists

p-times

Run promise-returning & async functions a specific number of times concurrently

In 2 lists

p-catch-if

Conditional promise catch handler

In 2 lists

p-time

Measure the time a promise takes to resolve

In 2 lists

p-log

Log the value/error of a promise

In 2 lists

p-filter

Filter promises concurrently

In 2 lists

p-settle

Settle promises concurrently and get their fulfillment value or rejection reason

In 2 lists

p-memoize

Memoize promise-returning & async functions

In 2 lists

p-whilst

Calls a function repeatedly while a condition returns true and then resolves the promise

In 2 lists

p-throttle

Throttle promise-returning & async functions

In 2 lists

p-debounce

Debounce promise-returning & async functions

In 2 lists

p-retry

Retry a promise-returning or async function

In 2 lists

p-wait-for

Wait for a condition to be true

In 2 lists

p-timeout

Timeout a promise after a specified amount of time

In 2 lists

p-race

A better Promise.race()

In 2 lists

p-try

Promise#try() ponyfill - Starts a promise chain

In 2 lists

p-finally

Promise#finally() ponyfill - Invoked when the promise is settled regardless of outcome

p-any

Wait for any promise to be fulfilled

In 2 lists

p-some

Wait for a specified number of promises to be fulfilled

In 2 lists

p-pipe

Compose promise-returning & async functions into a reusable pipeline

In 2 lists

p-each-series

Iterate over promises serially

In 2 lists

p-map-series

Map over promises serially

In 2 lists

p-reduce

Reduce a list of values using promises into a promise for a value

In 2 lists

p-props

Like Promise.all() but for Map and Object

In 2 lists

Convenience Utilities >Others

promise-method

Standalone bluebird.method. Turn a synchronously-returning method into a promise-returning one.

is-promise

Determine if something looks like a Promise.

In 3 lists

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 and bluebird.coroutine, but supports thunks too.

In 3 lists

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 nodeify method which calls a Node-style callback on resolution or rejection.

See category
94

Awesome Rust

rust-unofficial/awesome-rust

A curated list of Rust code and resources.

Fresh★ 60k1833 entriesPushed today
94

Awesome Mac

jaywcjlove/awesome-mac

 This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

Fresh★ 115k1316 entriesPushed today
94

Awesome Python

vinta/awesome-python

The definitive list that answers "I want to do X in Python, which tool should I use?"

Fresh★ 324k504 entriesPushed today
94

Awesome C++

fffaraz/awesome-cpp

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Fresh★ 74k1358 entriesPushed yesterday
94

Awesome Go

avelino/awesome-go

A curated list of awesome Go frameworks, libraries and software

Fresh★ 186k3119 entriesPushed yesterday
94

Awesome PHP

ziadoz/awesome-php

A curated list of amazingly awesome PHP libraries, resources and shiny things.

Fresh★ 33k87 entriesPushed 2 days ago