sequentPromises resolves Promises sequentially
npm install stack-promises
!npm bundle size
A stack of tasks that are executed one by one, but the result is taken from the last.
Identical functions on the stack (check by reference) are executed only once.
npm
``sh`
npm install stack-promises
yarn
`sh`
yarn add stack-promises
`js
import creteStackPromises from 'stack-promises';
const stackPromises = creteStackPromises();
stackPromises.add(() => Promise.resolve(1));
stackPromises.add(() => Promise.resolve(2));
stackPromises().then(data => {
console.log(data); /// 2
});
`
`js
import creteStackPromises from 'stack-promises';
const stackPromises = creteStackPromises();
stackPromises
.add(() => Promise.resolve(1))() // execute
.then(data => {
console.log(data); // 1
});
stackPromises
.add(() => Promise.resolve(2))() // execute
.then(data => {
console.log(data); // 2
});
stackPromises().then(data => {
console.log(data); // 2
});
`
`js
import creteStackPromises, { isPromiseIsNotActualError } from 'stack-promises';
import delayPromise from 'promise-delay';
const stackPromises = creteStackPromises();
let checkQue = 0;
const request1 = () =>
delayPromise(3000, 1).finally(() => {
checkQue += 1;
});
const resultAfter1 = stackPromises.add(request1)();
const request2 = () =>
delayPromise(1000, 2).finally(() => {
checkQue *= 2;
});
const resultAfter2 = stackPromises.add(request2)();
Promise.allSettled([resultAfter1, resultAfter2]).then(([{ reason }, { value }]) => {
isPromiseIsNotActualError(reason); // true
value; // 2
checkQue; // 2
// request1 called 1 times
// request2 called 1 times
});
`
`js`
stackPromises.add(() => Promise.resolve(1)).add(() => Promise.resolve(2));
`sh``
npm test
Krivega Dmitriy
- Website: https://krivega.com
- Github: @Krivega
Contributions, issues and feature requests are welcome!
Feel free to check issues page. You can also take a look at the contributing guide.
Copyright © 2020 Krivega Dmitriy.
This project is MIT licensed.