首页 > 解决方案 > NodeJS Puppeteer 添加超时以等待特定请求

问题描述

本质上,我有一段代码正在等待,直到在 puppeteer 中完成特定请求,如下所示:

page.on('response', async (response) => {
      const request = response.request();
      if (request.url().includes('specificurl.com')){
          console.log(response);
      }
});

但是,我想添加 120000 毫秒的超时,这样如果在 2 分钟内未找到我的特定请求,它就会引发超时。这可能吗?

任何帮助,将不胜感激!

标签: node.jstimeoutpuppeteer

解决方案


也许是这样的:

await Promise.race([
    new Promise((resolve, _) => {
        page.on('response', async (response) => {
            const request = response.request();
            if (request.url().includes('specificurl.com')) {
                console.log(response);
                resolve();
            }
        });
    }),
    new Promise((_, reject) => {
        setTimeout(reject, 120000, new Error('Timeout'));
    }),
]);

推荐阅读