iterable-observer
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

Iterable Observer

Observable Proposal implement based on Async Generator (ES 2018) & TypeScript

NPM Dependency CI & CD

NPM

Usage

Basic

import { Observable } from 'iterable-observer';

var count = 0,
    list = [];

const observable = new Observable(({ next, complete }) => {
    const timer = setInterval(
        () => (++count < 5 ? next(count) : complete(count)),
        0
    );

    return () => clearInterval(timer);
});

(async () => {
    for await (const item of observable) list.push(item);

    console.log(list); // [1, 2, 3, 4, 5]
})();

Enhance Run-time platforms

import { Observable } from 'iterable-observer';

const reader = new FileReader(),
    {
        files: [file]
    } = document.querySelector('input[type="file"]');

reader.readAsBlob(file);

(async () => {
    for await (const { loaded } of Observable.fromEvent(reader, 'progress'))
        console.log((loaded / file.size) * 100 + '%');
})();

Concurrent Task to Serial Queue

import { createQueue } from 'iterable-observer';
import Koa from 'koa';
import BodyParser from 'koa-bodyparser';

const { process, observable } = createQueue(),
    app = new Koa();

(async () => {
    for await (const {
        defer: { resolve },
        data
    } of observable)
        resolve(JSON.stringify(data));
})();

app.use(BodyParser)
    .use(async context => (context.body = await process(context.request.body)))
    .listen(80);

Package Sidebar

Install

npm i iterable-observer

Weekly Downloads

93

Version

1.0.1

License

LGPL-3.0

Unpacked Size

63.7 kB

Total Files

13

Last publish

Collaborators

  • tech_query