2020-06-04 14:56:45 +00:00
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home ](./index.md ) > [puppeteer ](./puppeteer.md ) > [JSHandle ](./puppeteer.jshandle.md ) > [evaluateHandle ](./puppeteer.jshandle.evaluatehandle.md )
## JSHandle.evaluateHandle() method
2020-06-22 15:21:57 +00:00
This method passes this handle as the first argument to `pageFunction` <!-- --> .
2020-06-04 14:56:45 +00:00
< b > Signature:< / b >
```typescript
2020-07-02 09:09:34 +00:00
evaluateHandle< HandleType extends JSHandle = JSHandle > (pageFunction: EvaluateHandleFn, ...args: SerializableOrJSHandle[]): Promise< HandleType > ;
2020-06-04 14:56:45 +00:00
```
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
2020-07-01 11:44:08 +00:00
| pageFunction | [EvaluateHandleFn ](./puppeteer.evaluatehandlefn.md ) | |
| args | [SerializableOrJSHandle ](./puppeteer.serializableorjshandle.md )<!-- --> \[\] | |
2020-06-04 14:56:45 +00:00
< b > Returns:< / b >
2020-07-01 11:44:08 +00:00
Promise< HandleType>
2020-06-04 14:56:45 +00:00
2020-06-22 15:21:57 +00:00
## Remarks
2020-06-25 14:49:35 +00:00
The only difference between `jsHandle.evaluate` and `jsHandle.evaluateHandle` is that `jsHandle.evaluateHandle` returns an in-page object (JSHandle).
2020-06-22 15:21:57 +00:00
2020-06-25 14:49:35 +00:00
If the function passed to `jsHandle.evaluateHandle` returns a Promise, then `evaluateHandle.evaluateHandle` waits for the promise to resolve and returns its value.
2020-06-22 15:21:57 +00:00
See [Page.evaluateHandle() ](./puppeteer.page.evaluatehandle.md ) for more details.