Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rosswarren/promalom
A very tiny promise util library
https://github.com/rosswarren/promalom
Last synced: 10 days ago
JSON representation
A very tiny promise util library
- Host: GitHub
- URL: https://github.com/rosswarren/promalom
- Owner: rosswarren
- Created: 2016-04-24T18:07:50.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T03:49:01.000Z (about 2 years ago)
- Last Synced: 2024-12-06T19:05:40.909Z (30 days ago)
- Language: JavaScript
- Size: 966 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Promalom
[![Greenkeeper badge](https://badges.greenkeeper.io/rosswarren/promalom.svg)](https://greenkeeper.io/)
A very tiny promise util library, designed to work with native Promise functionality. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
Very small in file size, very specific in functionality.
This library is intended for the Node environment. It can work well in the browser, however makes no attempt to polyfill Promise.
[![npm version](https://img.shields.io/npm/v/promalom.svg?style=flat-square)](https://www.npmjs.com/package/promalom)
# Getting Started
Installing the package
```sh
npm install --save promalom
```Importing the library
```js
// import the whole library
const P = require("promalom");// explicitly requiring individual functions through destructuring
const { create, wait, series } = require("promalom");// explicitly requiring individual functions from their source files
const series = require("promalom/src/series");
```## Functions
### Series
Run the specified promise returning functions in series. Ensures the previous promise is resolved before starting the current.
```js
P.series([
myPromiseReturningFunction,
anotherPromiseReturningFunction,
someOtherPromiseReturningFunction
]);
```#### Upload files one at a time using series
Assuming `uploadFile` is a function that takes the filename and returns a promise that resolves once uploaded
```js
const fileNames = ["image1.jpg", "image2.jpg", "image3.jpg"];P.series(
fileNames.map(fileName => {
return () => uploadFile(fileName);
})
);
```### Wait
Wait the specified time in milliseconds and then resolve. Wraps setTimeout.
```js
P.wait(20);
```#### Call a promise returning function with timeout of 1 second
```js
Promise.race(P.wait(1000), promiseReturningFunction);
```### Flush Promises
Flushes all pending promises in the JavaScript process queue. This is very useful in tests where you have Promises that are resolved immediately but you have no way to return or await them in your test.
```js
P.flushPromises();
```### Promisify
Convert a callback returning function to return a promise. The callback must be the last parameter.
The callback is expected to follow the Node error first callback pattern, where the first parameter of the callback is `error`.```js
const fs = require('fs');const readFileP = P.promisify(fs.readFile);
readFileP('/etc/passwd').then(data => {
...
}).catch(error => {
...
});
```