Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dfilatov/vow
ES6-compatible and Promises/A+ implementation for Node.js and browsers
https://github.com/dfilatov/vow
Last synced: about 2 months ago
JSON representation
ES6-compatible and Promises/A+ implementation for Node.js and browsers
- Host: GitHub
- URL: https://github.com/dfilatov/vow
- Owner: dfilatov
- License: mit
- Created: 2012-12-09T19:09:49.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T16:50:45.000Z (almost 2 years ago)
- Last Synced: 2024-07-09T04:20:31.608Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 659 KB
- Stars: 344
- Watchers: 16
- Forks: 46
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Vow
[![NPM Version](https://img.shields.io/npm/v/vow.svg?style=flat-square)](https://www.npmjs.com/package/vow)
[![Build Status](https://img.shields.io/travis/dfilatov/vow/master.svg?style=flat-square)](https://travis-ci.org/dfilatov/vow/branches)
[![NPM Downloads](https://img.shields.io/npm/dm/vow.svg?style=flat-square)](https://www.npmjs.org/package/vow)
=========Vow is a [Promises/A+](http://promisesaplus.com/) implementation.
It also supports [ES6 Promises](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-promise-objects) specification.Full API reference can be found at http://dfilatov.github.io/vow/.
Getting Started
---------------
### In Node.js ###
You can install using Node Package Manager (npm):npm install vow
### In Browsers ###
```html```
It also supports RequireJS module format and [YM module](https://github.com/ymaps/modules) format.Vow has been tested in IE6+, Mozilla Firefox 3+, Chrome 5+, Safari 5+, Opera 10+.
Usage
-----
### Creating a promise ###
There are two possible ways to create a promise.
#### 1. Using a deferred ####
```js
function doSomethingAsync() {
var deferred = vow.defer();
// now you can resolve, reject, notify corresponging promise within `deferred`
// e.g. `defer.resolve('ok');`
return deferred.promise(); // and return corresponding promise to subscribe to reactions
}doSomethingAsync().then(
function() {}, // onFulfilled reaction
function() {}, // onRejected reaction
function() {} // onNotified reaction
);
```
The difference between `deferred` and `promise` is that `deferred` contains methods to resolve, reject and notify corresponding promise, but the `promise` by itself allows only to subscribe on these actions.#### 2. ES6-compatible way ####
```js
function doSomethingAsync() {
return new vow.Promise(function(resolve, reject, notify) {
// now you can resolve, reject, notify the promise
});
}doSomethingAsync().then(
function() {}, // onFulfilled reaction
function() {}, // onRejected reaction
function() {} // onNotified reaction
);
```Extensions and related projects
-------------------------------
* [vow-fs](https://github.com/dfilatov/vow-fs) — vow-based file I/O for Node.js
* [vow-node](https://github.com/dfilatov/vow-node) — extension for vow to work with nodejs-style callbacks
* [vow-queue](https://github.com/dfilatov/vow-queue) — vow-based task queue with weights and priorities
* [vow-asker](https://github.com/nodules/vow-asker) — wraps [asker](https://github.com/nodules/asker) API in the vow promises implementation**NOTE**. Documentation for old versions of the library can be found at https://github.com/dfilatov/vow/blob/0.3.x/README.md.