3 Commits

Author SHA1 Message Date
Benaiah Mischenko
d58cd652d8 Cleanup resolvePromiseProperties
There were a couple issues with the original version of
`resolvePromiseProperties`:

- The wrapper promise was unnecessary, since we can just return the
  `Promise.all`. Fixing this allows us to remove a wrapping function,
  reduce indentation, remove the `resolve` and `reject` calls, and
  remove the now unnecessary `.catch` line.

- There was inadvertent mutation in the `Object.assign` call - the
  first parameter to `Object.assign` is mutated, so to call it without
  mutating existing objects the first parameter should be a literal
  `{}`. This is now fixed.
2017-04-11 10:55:56 -07:00
Benaiah Mischenko
1dc2841609 New promise helper, resolvePromiseProperties
`resolvePromiseProperties` takes on object and returns a promise which
resolves to a copy of the object. This copy has all its immediate
properties which were Promises replaced with the resolved value of
those promises. Promises are run with `Promise.all`. Errors are passed
up to the outer promise chain.

Example usage:

```js
resolvePromiseProperties({
  promise: Promise.resolve("this property will resolve to this string"),
  nonPromise: "this will remain the same",

  // you can nest the function
  nestedPromiseInside: resolvePromiseProperties({
    nestedPromise: Promise.resolve("this will resolve"),
    nestedNonPromise: "this stays the same",
  }),
})
.then(obj => console.log(obj))

```

That will produce the following output:

```js
{
  promise: "this property will resolve to this string",
  nonPromise: "this will remain the same",
  nestedPromiseInside: {
    nestedPromise: "this will resolve",
    nestedNonPromise: "this stays the same",
  },
}
```
2017-03-20 17:04:40 -07:00
Benaiah Mischenko
47096c1cf0 Filter merged PRs from unpublished posts 2017-03-14 17:01:21 -07:00