在回调中访问外部作用域变量

时间:2018-10-29 07:42:23

标签: puppeteer

我在Puppeteer中有以下ES6代码:

gcc -lstdc++ -lLibraryName ...

调用此代码时,出现错误async function waitForSelectorReversed(page, selector) { await page.waitFor(() => !document.querySelector(selector)); } 。我知道此错误是由以下事实造成的:闭包内部的代码无法从外部范围访问变量。使它正常工作的方法是什么?

1 个答案:

答案 0 :(得分:2)

您需要将外部作用域变量显式传递到page.waitFor中才能正常工作。正如documentation所述:

  

要将参数从node.js传递到page.waitFor函数的谓词:

const selector = '.foo';
await page.waitFor(selector => !document.querySelector(selector), {}, selector);

对于您的代码,您需要做的就是删除第一行,因为selector已经定义。

这并不是普通的Java脚本或ES6的东西,它是Puppeteer(和类似Puppeteer的工具)在与页面交互时如何工作的怪癖。