doc: add mention for using promisify on class methods
Fixes: https://github.com/nodejs/node/issues/30344 PR-URL: https://github.com/nodejs/node/pull/30355 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
This commit is contained in:
parent
c8d00d9ed0
commit
8138e9ce50
@ -862,6 +862,34 @@ will throw an error. If `original` is a function but its last argument is not
|
|||||||
an error-first callback, it will still be passed an error-first
|
an error-first callback, it will still be passed an error-first
|
||||||
callback as its last argument.
|
callback as its last argument.
|
||||||
|
|
||||||
|
Using `promisify()` on class methods or other methods that use `this` may not
|
||||||
|
work as expected unless handled specially:
|
||||||
|
|
||||||
|
```js
|
||||||
|
const util = require('util');
|
||||||
|
|
||||||
|
class Foo {
|
||||||
|
constructor() {
|
||||||
|
this.a = 42;
|
||||||
|
}
|
||||||
|
|
||||||
|
bar(callback) {
|
||||||
|
callback(null, this.a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const foo = new Foo();
|
||||||
|
|
||||||
|
const naiveBar = util.promisify(foo.bar);
|
||||||
|
// TypeError: Cannot read property 'a' of undefined
|
||||||
|
// naiveBar().then(a => console.log(a));
|
||||||
|
|
||||||
|
naiveBar.call(foo).then((a) => console.log(a)); // '42'
|
||||||
|
|
||||||
|
const bindBar = naiveBar.bind(foo);
|
||||||
|
bindBar().then((a) => console.log(a)); // '42'
|
||||||
|
```
|
||||||
|
|
||||||
### Custom promisified functions
|
### Custom promisified functions
|
||||||
|
|
||||||
Using the `util.promisify.custom` symbol one can override the return value of
|
Using the `util.promisify.custom` symbol one can override the return value of
|
||||||
|
Loading…
x
Reference in New Issue
Block a user