Skip to content
Tap into a promise chain without affecting its value or state
JavaScript TypeScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.editorconfig
.gitattributes
.gitignore
.npmrc
.travis.yml
index.d.ts
index.js
index.test-d.ts
license
package.json
readme.md
test.js

readme.md

p-tap Build Status

Tap into a promise chain without affecting its value or state

Install

$ npm install p-tap

Usage

const pTap = require('p-tap');

Promise.resolve('unicorn')
	.then(pTap(console.log)) // Logs `unicorn`
	.then(value => {
		// `value` is still `unicorn`
	});
const pTap = require('p-tap');

getUser()
	.then(pTap(user => recordStatsAsync(user))) // Stats are saved about `user` async before the chain continues
	.then(user => {
		// `user` is the user from getUser(), not recordStatsAsync()
	});
const pTap = require('p-tap');

Promise.resolve(() => doSomething())
	.catch(pTap.catch(console.error)) // prints any errors
	.then(handleSuccess)
	.catch(handleError);

API

pTap(tapHandler)

Use this in a .then() method.

Returns a thunk that returns a Promise.

pTap.catch(tapHandler)

Use this in a .catch() method.

Returns a thunk that returns a Promise.

tapHandler

Type: Function

Any return value is ignored. Exceptions thrown in tapHandler are relayed back to the original promise chain.

If tapHandler returns a Promise, it will be awaited before passing through the original value.

Related

  • p-log - Log the value/error of a promise
  • p-if - Conditional promise chains
  • p-catch-if - Conditional promise catch handler
  • More…

License

MIT © Sindre Sorhus

You can’t perform that action at this time.