将多个参数传递给 page.evaluate()

pass multiple parameters into page.evaluate()

我正在将一个附加参数传递给隐式 map() 函数。

这是在这部分代码中找到的

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

我想将一个附加参数状态传递给外部函数,而不是正则表达式,以便内部函数 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`);

我不确定参数如何从外部函数级联到最内部的函数。非常感谢任何指导

您可以将尽可能多的必要参数传递给 page.evaluate,只要它们是可序列化的即可:

await page.evaluate( (selector, state) => {
    console.log(selector)
    console.log(state)
}, "div.top-select-option a.eccheckbox", state);