1.0.47 • Published 4 months ago

balle v1.0.47

Weekly downloads
3
License
MIT
Repository
github
Last release
4 months ago

Coverage Status

Package Quality

WTF ?

No... the world does not need that shit but I need to try to understand.

Just to be clear, this implementation has nothing to do with A+ promise specs


install & test

@ yarn
@ yarn test 
@ yarn cover

usage

Make a promise :

const Balle = require('balle');
const p = new Balle((resolve, reject) => {
    var before = +new Date;
    setTimeout(() => 
        Math.random() > .5
            ? resolve([before, +new Date])
            : reject('that`s the cause')
    , 2000);
})

// deal with success using then
.then(result => console.log(result))

// deal with rejection | thrown error using catch
.catch(whatever => {
    console.log('Failure:');
    console.log(whatever);
})

// do something anyway
.finally(result_cause_error => {
    // get the result in case on resolution or the cause
    // in case of rejection|error
    console.log('Executed regardless the resolution or rejection')
});

reject a promise:

const p = new Balle((resolve, reject) => 
    setTimeout(() => reject('Ups... something went wrong'), 1000)
)
.then(() => { throw 'never thrown'; })
.catch((cause) => 
    // this will log
    console.log(cause)
);

late launch:

const resolvingPromise = new Balle();

resolvingPromise
.then(() => {
    throw 'Never executed';
})
.catch((cause) => {
    console.log('catched: ' + cause);
}).finally(cause => console.log('finally : ' + cause));

resolvingPromise
.launch((resolve, reject) => 
    setTimeout(function () {
        reject('a problem occurred');
    }, 100)
);

resolve:

const resolvingPromise = new Balle();
resolvingPromise.resolve('the value');
resolvingPromise.then(v => console.log(v === 'the value'));

reject:

const rejectingPromise = new Balle();
rejectingPromise.reject('the cause');
rejectingPromise.catch(v => console.log(v === 'the cause'));

Balle.one

// wraps the constructor call
const p1 = new Balle(/* executor func */);
// can be written
const p1 = Balle.one(/* executor func */);

Balle.all

const init = +new Date;
const p = Balle.all([
    Balle.one((resolve, reject) => 
        setTimeout(() => resolve(500), 1000)
    ),
    Balle.one((resolve, reject) => 
        setTimeout(() => resolve(200), 2000)
    ),
    Balle.one((resolve, reject) => 
        setTimeout(() => resolve(300), 1500)
    ),
])
.then((result) => {
    console.log((+new Date - init)+ ' ≈ 2000');
    console.log(result); // ---> [500, 200, 300]
})
.catch(() => {
    throw 'never thrown';
});

Balle.race

const init = +new Date;
const p = Balle.race([
    Balle.one((resolve, reject) => 
        setTimeout(() => resolve(500), 1000)
    ),
    Balle.one((resolve, reject) => 
        setTimeout(() => resolve(200), 1500)
    ),
    Balle.one((resolve, reject) => 
        setTimeout(() => resolve(300), 2000)
    ),
])
.then((result) => {
    console.log((+new Date - init) + ' ≈ 1000');
    console.log(result + ' == 500'); 
})
.catch(() => {
    throw 'never thrown';
});

Balle.chain

Balle.chain([
    () => Balle.one((resolve, reject) => 
        setTimeout(() => 
            Math.random() > .5
                ? reject('a problem occurred at #1')
                : resolve(100)
        , 100)
    ),
    r => Balle.one((resolve, reject) => 
        setTimeout(() => 
            Math.random() > .5
                ? reject('a problem occurred at #2')
                : resolve(101 + r)
        , 200)
    ),
    r => Balle.one((resolve, reject) => 
        setTimeout(() => 
            Math.random() > .5
                ? reject('a problem occurred at #3')
                : resolve(102 + r)
        , 300)
    )
])
.then(r => console.log('result : '+ r))
.catch(cause => console.log('cause : '+ cause))
.finally(() => console.log('----- finally -----'));

Balle.all async errors

Balle.all([
    Balle.one((res, rej) => 
        setTimeout(() => res(3), 1300)
    ),
    Balle.one((res, rej) => 
        setTimeout(() => {
            try {
                throw 'Error occurred';
            } catch(e) { rej(e); }
        }, 200)
    )
])
.then(r => console.log('The result is', r))
.catch(err => console.log('The error is', err));
1.0.47

4 months ago

1.0.46

1 year ago

1.0.45

4 years ago

1.0.44

4 years ago

1.0.43

4 years ago

1.0.42

4 years ago

1.0.41

4 years ago

1.0.40

4 years ago

1.0.39

5 years ago

1.0.38

5 years ago

1.0.37

5 years ago

1.0.36

5 years ago

1.0.35

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

5 years ago

1.0.24

5 years ago

1.0.23

5 years ago

1.0.22

5 years ago

1.0.21

5 years ago

1.0.20

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

6 years ago

1.0.14

6 years ago

1.0.13

6 years ago

1.0.12

6 years ago

1.0.11

6 years ago

1.0.10

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago