p-lazy
Version:
Create a lazy promise that defers execution until it's awaited or when `.then()`, `.catch()`, or `.finally()` is called
55 lines (33 loc) • 1.52 kB
Markdown
# p-lazy
> Create a lazy promise that defers execution until it's awaited or when `.then()`, or `.catch()`, or `.finally()` is called
Useful if you're doing some heavy operations and would like to only do it when the promise is actually used.
## Install
```sh
npm install p-lazy
```
## Usage
```js
import PLazy from 'p-lazy';
const lazyPromise = new PLazy(resolve => {
someHeavyOperation(resolve);
});
// `someHeavyOperation` is not yet called
await doSomethingFun;
// `someHeavyOperation` is called
console.log(await lazyPromise);
```
## API
### new PLazy(executor)
Same as the [`Promise` constructor](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise). `PLazy` is a subclass of `Promise`.
### PLazy.from(fn)
Create a `PLazy` promise from a promise-returning or async function.
### PLazy.resolve(value)
Create a `PLazy` promise that is resolved with the given `value`, or the promise passed as `value`.
### PLazy.reject(reason)
Create a `PLazy` promise that is rejected with the given `reason`.
## Related
- [p-cancelable](https://github.com/sindresorhus/p-cancelable) - Create a promise that can be canceled
- [p-defer](https://github.com/sindresorhus/p-defer) - Create a deferred promise
- [lazy-value](https://github.com/sindresorhus/lazy-value) - Create a lazily evaluated value
- [define-lazy-prop](https://github.com/sindresorhus/define-lazy-prop) - Define a lazily evaluated property on an object
- [More…](https://github.com/sindresorhus/promise-fun)