Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ert78gb/async-init

Async Singleton Initializer
https://github.com/ert78gb/async-init

Last synced: 13 days ago
JSON representation

Async Singleton Initializer

Awesome Lists containing this project

README

        

# Async init

The library helps to initialize async singleton.
If multiple requests arrive before singleton initialization is finished, then they will be queued.
Once singleton has been initialized the queue will be processed in the FIFO.

## Usage

`$ npm i @ert78gb/async-init`

```javascript
// singleton.js
const asyncInit = require('@ert78gb/async-init')
const asyncIniter = asyncInit();

async function asyncInstanceCreator() {
// implementation
// It will call only once
return Promise.resolve('Return value of an async operation.')
}

function getSingleton() {
return asyncIniter(asyncInstanceCreator)
}

module.exports = getSingleton

// usage.js
const getSingleton = require('./singleton.js')

const [instance1, instance2] = Promise.all([
getSingleton(),
getSingleton()
])

console.log(instance1 === instance2) // true
```