代码之家  ›  专栏  ›  技术社区  ›  user1592380

等待fn(浏览器)做什么?

  •  0
  • user1592380  · 技术社区  · 3 年前

    我正在研究如何通过并行化来加快木偶师的速度。我遇到过 https://advancedweb.hu/how-to-speed-up-puppeteer-scraping-with-parallelization/ 这看起来很有趣。这包括:

    const withBrowser = async (fn) => {
    const browser = await puppeteer.launch({/* ... */});
    try {
        return await fn(browser);
    } finally {
        await browser.close();
    }
    }
    

    我不理解第4行中的fn(浏览器)。有人能解释一下吗?

    1 回复  |  直到 3 年前
        1
  •  1
  •   CertainPerformance    3 年前

    该网站显示了 withBrowser 作为:

    await withBrowser(async (browser) => {
        for (const url of urls) {
            const result = await withPage(browser)(async (page) => {
                await page.goto(url);
    
                // run test code
                return ...;
            });
    
            results.push(result);
        }
    });
    

    简而言之,它只是一个以Puppeter浏览器为参数并执行一些异步操作的函数,返回Promise。该页面认为,通过包装 的代码 带浏览器 功能,它可以很容易地确保浏览器在一切完成后得到正确处理。