https://github.com/cognitom/fafgag
Creates an Observable from FAFGAG (Function / Async Function / Generator / Async Generator)
https://github.com/cognitom/fafgag
async-generator convert generator observable
Last synced: 8 months ago
JSON representation
Creates an Observable from FAFGAG (Function / Async Function / Generator / Async Generator)
- Host: GitHub
- URL: https://github.com/cognitom/fafgag
- Owner: cognitom
- Created: 2018-05-09T13:25:17.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-10-14T11:34:00.000Z (over 7 years ago)
- Last Synced: 2025-04-05T22:32:39.458Z (about 1 year ago)
- Topics: async-generator, convert, generator, observable
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/fafgag
- Size: 17.6 KB
- Stars: 8
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FAFGAG
[](https://travis-ci.com/cognitom/fafgag)
[](https://www.npmjs.org/package/fafgag)
Creates an Observable from FAFGAG (Function / Async Function / Generator / Async Generator)
## Installation
```bash
$ npm install fafgag
```
## Usage
`fafgag` converts the results which returned from FAFGAG into Observables:
- **F**unction --> *Value* --> Observable
- **A**sync **F**unction --> *Promise* --> Observable
- **G**enerator --> *Iterator* --> Observable
- **A**sync **G**enerator --> *Async Iterator* --> Observable
```javascript
import toObservable from "fafgag"
function f(n) {
return n * n
}
async function af(n) {
await sleep(1000)
return n * n
}
function* g(n) {
yield n * n
yield (n + 1) * (n + 1)
}
await function* ag(n) {
yield n * n
await sleep(1000)
yield (n + 1) * (n + 1)
}
toObservable(f, 5).subscribe(console.log) // output: 25
toObservable(af, 5).subscribe(console.log) // output: (one sec later) 25
toObservable(g, 5).subscribe(console.log) // output: 25 36
toObservable(ag, 5).subscribe(console.log) // output: 26 (one sec later) 36
```
**Note**: only when it get subscribed, it will run. This laziness is the basic behavior of Observables.
## Native / Zen
If you prefer Babel's polyfill, import `fafgag` like this:
```javascript
import toObservable from "fafgag"
```
If you prefer zen-observable, import `fafgag` like this:
```javascript
import toObservable from "fafgag/lib/zen.js" // for ES module environment
import toObservable from "fafgag/zen" // for other environments
```
| | UMD | ES module | Note |
| :-- | :-- | :-- | :-- |
| native (babel) | "fafgag" | "fafgag" | standard, but w/o these methods below |
| zen-observable | "fafgag/zen" | "fafgag/lib/zen.js" | `map()`, `filter()`, `flatMap()`, etc. |
## License
MIT