Skip to content

Promises

Promises/A+ logo

Awesome Promises Awesome

> JavaScript Promises 有用资源的精选列表

灵感来自 awesome 列出事情. 不要与其他令人敬畏的承诺相混淆,例如“我向你保证一百万美元”或“我保证你会保持健康并且永远不必再去健身房”.

Resources, Blogs, and Books

For beginners

Deep Dive

References

Promises/A+ Implementations (ES6/ES2015 compatible)

Strict Implementations

这些实现不多于或少于 es6 规范. 它们制作了很棒的 polyfill,并且与原生 promise 非常兼容.

  • pinkie - 小马菲尔. 面向节点,但是 browserifyable . 非常小的实现.
  • native-promise-only - 填充. 浏览器和节点兼容.
  • es6-promise - 选择加入 polyfill. rsvp.js 的严格规范子集.
  • lie - 小巧,可通过选择加入的 polyfill 进行浏览器验证.

Implementations with extras

所有这些都提供了比该语言更多的功能,但仍保持兼容. 所有人的节点+浏览器.

  • bluebird - 功能齐全,性能极佳. 长堆栈跟踪和生成器/协程支持.
  • creed - 超高性能和全功能,如 Bluebird,但面向 FP. 协程、生成器、承诺、ES2015 可迭代对象和幻想世界规范.
  • rsvp.js 重量轻,有一些额外的东西. 向下兼容IE6!
  • Q - 最初的实现之一. 长堆栈跟踪和其他好东西.
  • then/promise - 添加了 nodeifydenodifydone() 的小程序.
  • when.js - 包含控制流、功能和实用方法.

Fallbacks

Convenience Utilities

本机和严格符合规范的承诺对于兼容性、未来证明、库作者和浏览器来说都是很棒的. 然而,像 bluebird 这样的库将好东西修补到“Promise”构造函数和原型上. 解决方案? 当然是小模块!

sindresorhus's many Promise utilities (see notes)

  • delay - 将承诺延迟指定的时间.
  • pify - Promisify ("denodify") 回调函数.
  • loud-rejection - 使未处理的承诺拒绝大声失败,而不是默认的静默失败.
  • hard-rejection - 使未处理的承诺拒绝立即失败而不是默认的静默失败
  • p-queue - 具有并发控制的 Promise 队列
  • p-break - 打破承诺链
  • p-lazy - 创建延迟执行直到调用 .then() 或 .catch() 的惰性承诺
  • p-defer - 创建延迟承诺
  • p-if - 条件承诺链
  • p-tap - 在不影响其价值或状态的情况下进入承诺链
  • p-map - 同时映射承诺
  • p-all - 使用可选的有限并发并发运行承诺返回和异步函数
  • p-limit - 以有限的并发运行多个承诺返回和异步函数
  • p-times - 同时运行承诺返回和异步函数特定次数
  • p-catch-if - 条件承诺捕获处理程序
  • p-time - 测量承诺解决所需的时间
  • p-log - 记录承诺的价值/错误
  • p-filter - 同时过滤承诺
  • p-settle - 同时结算承诺并获得他们的履行价值或拒绝原因
  • p-memoize - 记住承诺返回和异步功能
  • p-whilst - 在条件返回 true 时重复调用函数,然后 resolve the promise
  • p-throttle - 限制承诺返回和异步功能
  • p-debounce - 消除承诺返回和异步功能
  • p-retry - 重试承诺返回或异步功能
  • p-wait-for - 等待条件为真
  • p-timeout - 在指定的时间后超时承诺
  • p-race - 更好的 Promise.race()
  • p-try - Promise#try() ponyfill - Starts a promise chain
  • p-finally - Promise#finally() ponyfill - Invoked when the promise is settled regardless of outcome
  • p-any - 等待任何承诺被兑现
  • p-some - 等待指定数量的承诺被履行
  • p-pipe - 将承诺返回和异步函数组合成可重用的管道
  • p-each-series - 连续迭代承诺
  • p-map-series - 连续映射承诺
  • p-reduce - 使用 promises 将值列表简化为一个值的 promise
  • p-props - 类似于 Promise.all() 但用于 MapObject

Others

  • promise-method - 独立的“bluebird.method”. 将一个同步返回的方法变成一个承诺返回的方法.
  • is-promise - 确定某些东西是否看起来像 Promise.
  • sprom - 解决流结束时的问题. 可选缓冲(小心这个!)
  • task.js - 使用承诺和生成器以阻塞方式编写异步函数. 比如 bluebird.coroutine.
  • co - 类似于 task.jsbluebird.coroutine,但也支持 thunk.
  • lie-fs - Node 的 FS API 的承诺包装器.
  • promise-do-until - 重复调用一个函数,直到条件返回 true,然后 resolve promise.
  • promise-do-whilst - 在条件返回 true 时重复调用函数,然后解决承诺.
  • promise-semaphore - 以可配置的串行方式推送一组要完成的工作
  • promise-nodeify - 独立的 nodeify 方法,在解决或拒绝时调用 Node 风格的回调.

License

根据许可 Creative Commons CC0 License.