npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

promise-hash

v1.3.0

Published

Adds an RSVP-like Promise.hash() method for resolving groups of promises.

Downloads

904

Readme

promise-hash npm Travis

In the current Promises implementation that Node.js uses, there exists the Promise.all() method, which resolves an array of promises. But what that implementation really misses is the way the rsvp library allows you to pass an object to a promise and retain the data structure of that promise.

This library adds this functionality.

Getting Started

npm install --save promise-hash

In your app, you can then do this:

require('promise-hash');

Because it functions as a polyfill, all you need to do is include this in your code and the Promise object will be polyfilled to include the #hash() method.

If you prefer to not to polyfill the Promise object, you can use it directly:

var hash = require('promise-hash/lib/promise-hash')

Usage Example

require('promise-hash');

function dummyPromise(value) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, 100, value);
  });
}

const promises = {
  promise1: dummyPromise('this is the first promise'),
  promise2: dummyPromise('this is the second promise'),
  promise3: dummyPromise('this is the third promise')
};

Promise.hash(promises).then(results => {
  console.log(results); // { promise1: 'this is the first promise', promise2: ... }
});

Nodejs Garbage Collection

If you start getting Promise.hash is not a function, then the culprit is Nodejs's garbage collection. I'm looking into ways of solving this properly (feel free to send me a note if you know a good way!), but in the meantime, try putting the require into an active closure.