GT2/GT2-iOS/node_modules/instapromise/README.md

46 lines
1.7 KiB
Markdown

# Instapromise [![Circle CI](https://circleci.com/gh/exponentjs/instapromise.svg?style=svg)](https://circleci.com/gh/exponentjs/instapromise)
Promisify Node-style asynchronous functions by putting a `.promise` after them (or after the object for methods).
[![npm package](https://nodei.co/npm/instapromise.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/instapromise/)
If you use this library then if you put `.promise` after a Node-style
asynchronous function, it will turn it into a function that returns a promise
instead of taking a callback.
```js
import 'instapromise';
import fs from 'fs';
let p = fs.readFile.promise('/tmp/hello', 'utf8');
p.then(console.log);
```
The original function is available as a property on the promise-generating function (`.___instapromiseOriginalFunction___`).
If you want to promisify methods, use `.promise` after the object and before the method name.
```js
import 'instapromise';
import fs from 'fs';
let p = fs.promise.readFile('/tmp/hello', 'utf8');
p.then(console.log);
```
## Changelog
### 2.0.7
Non-enumerable properties like class methods are now promisified.
Functions with names that would cause syntax errors (like `default`) are supported.
### 2.0.3
The `___instapromiseOriginalFunction___` property is now non-enumerable so it doesn't show up when serializing functions whose `promise` property has been accessed before.
### 2.0.0
The `Promise` polyfill is no longer provided. 1.x provided a polyfill for environments without a native `Promise` implementation, but in general, most environments you'll use now provide `Promise`.
## Credits
This code is based on the proxying code used in [fibrous](https://github.com/goodeggs/fibrous/blob/master/src/fibrous.coffee).