我正在将一个附加参数传递给隐式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`);
我不确定如何将参数从外部函数级联为最内部的函数。希望获得任何指导
答案 0 :(得分:1)
您可以将尽可能多的必要参数传递给page.evaluate
,只要它们是可序列化的:
await page.evaluate( (selector, state) => {
console.log(selector)
console.log(state)
}, "div.top-select-option a.eccheckbox", state);