3 ms·
How does the resolve function work here? It is passed an object where one property is an object and the other a promise. The next then suddenly receives the res
by korla 7y ago
How does the resolve function work here? It is passed an object where one property is an object and the other a promise. The next then suddenly receives the resolved location..?
- deleted 7y ago[deleted]
- hoorayimhelping 7y agoThe argument passed to `resolve` gets returned from the resolve function and becomes available to any handler that handles it with `then`. In the above example, the object is being destructured as part of the arguments. The destructuring is probably what's tripping you up. // straightforward, no magic const simpleFunction = function() { return Promise.resolve({ name: 'simpleObject' }); } simpleFunction().then(function(response) { console.log(response); // { name: 'simpleObject' } }); // alternatively, destructuring the arguments simpleFunction().then(function({ name }) { console.log(name); // 'simpleObject' });
- deleted 7y ago[deleted]
- korla 7y agoNo that is not what is tripping me up, or happening. The other answer explained it, some library code was executed aeaiting the location-promise.
- thedufer 7y agoIt iterates over all key/value pairs. For each value, if it is a promise it waits for it and replaces it with the result, while non-promises are left as-is. This is a fairly common function to have in promise libraries.
- korla 7y agoThat was my point. It’s not obvious to the reader that this is better since it’s a non-standard way of resolving promises. But it looks neat. I’ve never seen it, what library do you have experience with that does it this way?
- thedufer 7y agoI've been out of the JavaScript world for years now, but I last used Bluebird which has Promise.props[1] with this behavior. [1] http://bluebirdjs.com/docs/api/promise.props.html http://bluebirdjs.com/docs/api/promise.props.html