передать несколько параметров в page.evaluate () - PullRequest
0 голосов
/ 07 ноября 2018

Я передаю дополнительный параметр в неявную функцию map ().

это находится в этой части кода

{ s: elementPath.match(RegExp(/=(.*?)]/))[1] }

Вместо Regex я хотел бы передать состояние дополнительного параметра во внешние функции, чтобы внутренняя функция map () могла получить к нему доступ

let res = await page.evaluate(elementPath => {
  return Array.from(
    document.querySelectorAll(elementPath),
    function(cin, index) {
      const result = {
        cinemaState: this.s, 
        cinemaIndex: index,
        cinemaId: cin.getAttribute("data-id"),
        cinemaName: cin.getAttribute("data-name"),
        cinemaURL: cin.getAttribute("data-url")
      };
      return result;
    },
    { s: elementPath.match(RegExp(/=(.*?)]/))[1] } // extracts state from the selector //TODO pass as additional argument 
  );
}, `div[data-state=${state}] div.top-select-option a.eccheckbox`);

Я не уверен, как параметр мог бы каскадно переходить от внешних функций к самой внутренней функции. Буду признателен за любые рекомендации

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете передать столько необходимых параметров в page.evaluate, насколько они сериализуемы:

await page.evaluate( (selector, state) => {
    console.log(selector)
    console.log(state)
}, "div.top-select-option a.eccheckbox", state);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...