Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/doodlewind/nativebird
π¦ Bluebird alternative within ~200 loc
https://github.com/doodlewind/nativebird
async bluebird bluebird-promise javascript promise promise-library promises-aplus
Last synced: 6 days ago
JSON representation
π¦ Bluebird alternative within ~200 loc
- Host: GitHub
- URL: https://github.com/doodlewind/nativebird
- Owner: doodlewind
- Created: 2022-06-30T15:39:48.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-16T22:13:15.000Z (6 months ago)
- Last Synced: 2024-10-11T22:48:18.143Z (3 months ago)
- Topics: async, bluebird, bluebird-promise, javascript, promise, promise-library, promises-aplus
- Language: JavaScript
- Homepage:
- Size: 73.2 KB
- Stars: 78
- Watchers: 4
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NativeBird
Ultralight promise extension compatible with Bluebird
![logo](./logo.png)
## Introduction
[δΈζδ»η»](https://zhuanlan.zhihu.com/p/536154525)
As a pioneer in JavaScript async ecosystem, [Bluebird](http://bluebirdjs.com/) is a great userland promise library with handy utility methods included. However the way it works leads to larger bundle size and more verbose stack trace.
NativeBird is compatible with a core Bluebird subset by extending native promise, and all of its extended APIs (implemented within ~200 lines) are fully tested with the corresponding test cases in Bluebird.
NativeBird can be used in several scenarios:
- To reuse promise utility methods like `Promise.map` and `Promise.each` without copying snippets from a gist.
- To perform migration in existing Bluebird projects.
- To simply learn JavaScript async operation skills πΆ.## Installation
```sh
npm install nativebird
``````js
import Promise from "nativebird";
```It's also fine to copy `promise.mjs` and its type definition directly into your project directory.
## API
- Static methods:
- [`Promise.delay`](http://bluebirdjs.com/docs/api/promise.delay.html)
- [`Promise.try`](http://bluebirdjs.com/docs/api/promise.try.html)
- [`Promise.each`](http://bluebirdjs.com/docs/api/promise.each.html)
- [`Promise.mapSeries`](http://bluebirdjs.com/docs/api/promise.mapseries.html)
- [`Promise.map`](http://bluebirdjs.com/docs/api/promise.map.html)
- [`Promise.reduce`](http://bluebirdjs.com/docs/api/promise.reduce.html)
- `Promise.defer` (deprecated)
- Instance methods:
- [`promise.delay`](http://bluebirdjs.com/docs/api/delay.html)
- [`promise.map`](http://bluebirdjs.com/docs/api/map.html)
- [`promise.reduce`](http://bluebirdjs.com/docs/api/reduce.html)
- [`promise.mapSeries`](http://bluebirdjs.com/docs/api/mapseries.html)
- [`promise.each`](http://bluebirdjs.com/docs/api/each.html)
- [`promise.timeout`](http://bluebirdjs.com/docs/api/timeout.html)
- [`promise.tap`](http://bluebirdjs.com/docs/api/tap.html)
- [`promise.all`](http://bluebirdjs.com/docs/api/all.html)
- [`promise.spread`](http://bluebirdjs.com/docs/api/spread.html)
- [`promise.asCallback`](http://bluebirdjs.com/docs/api/ascallback.html)Since NativeBird inherits from native promise, all promise APIs defined in ECMAScript standard (say [`Promise.allSettled`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) and [`Promise.any`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any)) are naturally supported.
## Caveats
- `Promise.cancel` is not supported.
- Synchronous inspection (e.g. `Promise.isFulfilled`) is not supported.## Contribution
To implement a new API in Bluebird, please also port the corresponding test cases under `test/mocha` in Bluebird repo and test it with `npm test`.
## License
MIT