跳转到主要内容

Worker

Worker 类代表一个 WebWorker。在 page 对象上会触发 worker 事件以表示创建了一个 worker。当 worker 被销毁时,会在 worker 对象上触发 close 事件。

page.on('worker', worker => {
console.log('Worker created: ' + worker.url());
worker.on('close', worker => console.log('Worker destroyed: ' + worker.url()));
});

console.log('Current workers:');
for (const worker of page.workers())
console.log(' ' + worker.url());

方法

evaluate

v1.9 之前添加 worker.evaluate

返回 pageFunction 的返回值。

如果传给 worker.evaluate() 的函数返回一个 Promise,那么 worker.evaluate() 将会等待该 promise 解析并返回其值。

如果传给 worker.evaluate() 的函数返回一个非 可序列化 (Serializable) 的值,那么 worker.evaluate() 将返回 undefined。Playwright 还支持传输一些无法通过 JSON 序列化的附加值:-0NaNInfinity-Infinity

用法

await worker.evaluate(pageFunction);
await worker.evaluate(pageFunction, arg);

参数

返回


evaluateHandle

v1.9 之前添加 worker.evaluateHandle

返回 pageFunction 的返回值作为 JSHandle

worker.evaluate()worker.evaluateHandle() 唯一的区别在于 worker.evaluateHandle() 返回的是 JSHandle

如果传给 worker.evaluateHandle() 的函数返回一个 Promise,那么 worker.evaluateHandle() 将会等待该 promise 解析并返回其值。

用法

await worker.evaluateHandle(pageFunction);
await worker.evaluateHandle(pageFunction, arg);

参数

返回


url

v1.9 之前添加 worker.url

用法

worker.url();

返回


waitForEvent

Added in: v1.57 worker.waitForEvent

等待事件触发并将值传递给谓词函数。在谓词返回真值时返回。如果事件在页面关闭前触发,将抛出错误。返回事件数据值。

用法

// Start waiting for download before clicking. Note no await.
const consolePromise = worker.waitForEvent('console');
await worker.evaluate('console.log(42)');
const consoleMessage = await consolePromise;

参数

  • event string#

    事件名称,通常传递给 *.on(event) 的相同名称。

  • optionsOrPredicate function | Object (可选)#

    一个接收事件的谓词或一个选项对象。可选。

  • options Object (可选)

    • predicate function (可选)#

      接收事件数据,并在等待应该解决时解析为真值。

返回


Events

on('close')

v1.9 之前添加 worker.on('close')

当此专用 WebWorker 被终止时触发。

用法

worker.on('close', data => {});

事件数据


on('console')

Added in: v1.57 worker.on('console')

当 worker 中的 JavaScript 调用其中一个控制台 API 方法(例如 console.logconsole.dir)时触发。

用法

worker.on('console', data => {});

事件数据