3 ms·
As noted, this already was possible in Node 7.x. But to use it, you needed a function that returned a promise. And many functions do not, due to having been dev
by flavio81 9y ago
As noted, this already was possible in Node 7.x. But to use it, you needed a function that returned a promise. And many functions do not, due to having been developed earlier. This is true even for libraries done in 2016. Even today many Node.js developers don't seem to use async/await. At least in my country... And thus they live in braces {} hell.
The improvement on the 8.0.0 version is that such an "oldie" function can be Promisified. A great improvement.
- simplify 9y agoBy "oldie" function, do you mean functions that expect node-style callbacks? e.g. function myCallback (err, result) {...}
- styfle 9y agoCorrect. Most node core APIs are written this way and now core ships an utility function[0] to wrap those functions in a promise. [0]: https://medium.com/@styfle/promises-in-node-js-8-x-core-d6a8a93e85a2 https://medium.com/@styfle/promises-in-node-js-8-x-core-d6a8...
- mastax 9y agoIt seems to me that Node should ship promisify-ed versions of all these functions (e.g. fs.readFileAsync). Over time they could replace the implementation with ones that use the OS Async APIs, though perhaps this step is unnecessary if you're already using an event loop underneath.
- lhnz 9y agoUntil then you can use `mz` for a modernised API[0]. [0] https://github.com/normalize/mz https://github.com/normalize/mz
- NoInkling 9y agoI mean, they've been debating about how to add a promisified API for years (see for example https://github.com/nodejs/node/pull/5020 https://github.com/nodejs/node/pull/5020) but nothing has come of it. util.promisify is a welcome addition, but very late for a first step.
- abalashov 9y agoHow incredibly uncanny. Just yesterday morning, I posted this question! https://stackoverflow.com/questions/44260289/using-native-es6-promises-to-de-nodeify-compact-standard-callbacks https://stackoverflow.com/questions/44260289/using-native-es...
- thunder-ltu 9y agoCorrect
- deleted 9y ago[deleted]
- floatboth 9y agoYou could always promisify functions manually, or with this tiny package https://github.com/sindresorhus/pify https://github.com/sindresorhus/pify but yeah it's nice to see that in the standard library.
- bfred_it 9y agoutil.promisify is now in Node core as shown in the Original Comment