Перейти к основному содержимому

Worker

Класс Worker представляет WebWorker. Событие 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

Возвращает значение, возвращаемое pageFunction.

Если функция, переданная в worker.evaluate(), возвращает Promise, то worker.evaluate() будет ожидать разрешения промиса и вернет его значение.

Если функция, переданная в worker.evaluate(), возвращает значение, не являющееся Serializable, то worker.evaluate() вернет undefined. Playwright также поддерживает передачу некоторых дополнительных значений, которые не сериализуются через JSON: -0, NaN, Infinity, -Infinity.

Использование

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

Аргументы

  • pageFunction function | string#

    Функция для выполнения в контексте воркера.

  • arg EvaluationArgument (опционально)#

    Необязательный аргумент для передачи в pageFunction.

Возвращает


evaluateHandle

Возвращает значение, возвращаемое pageFunction в виде JSHandle.

Единственное отличие между worker.evaluate() и worker.evaluateHandle() заключается в том, что worker.evaluateHandle() возвращает JSHandle.

Если функция, переданная в worker.evaluateHandle(), возвращает Promise, то worker.evaluateHandle() будет ожидать разрешения промиса и вернет его значение.

Использование

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

Аргументы

  • pageFunction function | string#

    Функция для выполнения в контексте воркера.

  • arg EvaluationArgument (опционально)#

    Необязательный аргумент для передачи в pageFunction.

Возвращает


url

Использование

worker.url();

Возвращает


waitForEvent

Добавлено в: v1.57 worker.waitForEvent

Ждёт срабатывания события и передаёт его значение в функцию-предикат. Возвращается, когда предикат возвращает truthy-значение. Выбросит ошибку, если страница будет закрыта до того, как событие сработает. Возвращает значение данных события.

Использование

// Начните ждать загрузку до клика. Обратите внимание: без await.
const consolePromise = worker.waitForEvent('console');
await worker.evaluate('console.log(42)');
const consoleMessage = await consolePromise;

Аргументы

  • event string#

    Имя события — то же, которое обычно передают в *.on(event).

  • optionsOrPredicate function | Object (опционально)#

    • predicate function

      Получает данные события и возвращает truthy-значение, когда ожидание должно завершиться.

    • timeout number (опционально)

      Максимальное время ожидания в миллисекундах. По умолчанию 0 — без таймаута. Значение по умолчанию можно изменить через опцию actionTimeout в конфиге или с помощью методов browserContext.setDefaultTimeout() или page.setDefaultTimeout().

    Либо предикат, получающий событие, либо объект опций. Необязательно.

  • options Object (опционально)

    • predicate function (опционально)#

      Получает данные события и возвращает truthy-значение, когда ожидание должно завершиться.

Возвращает


События

on('close')

Генерируется, когда данный выделенный WebWorker завершает работу.

Использование

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

Данные события


on('console')

Добавлено в: v1.57 worker.on('console')

Испускается, когда JavaScript внутри воркера вызывает один из методов console API, например console.log или console.dir.

Использование

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

Данные события