p-tap

by sindresorhus

sindresorhus / p-tap

Tap into a promise chain without affecting its value or state

129 Stars 7 Forks Last release: over 1 year ago (v3.1.0) MIT License 14 Commits 4 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.