首页 > 解决方案 > 如何从 page.on 函数中获取价值?

问题描述

在 page.on 方法中,我正在解析“content-disposition”标头并检索下载的文件名。

谁能告诉我如何使文件名在page.on方法之外可用?

page.on('response', response => {
   let url = response.request().url();
   let contentType = response.headers()['content-type'];
   if (contentType == 'audio/mpeg') {
      let contentDisposition = response.headers()['content-disposition'];
      let filename = contentDisposition.match(/filename="(.+)"/)[1];
   }
});

标签: javascriptnode.jspuppeteer

解决方案


经过更多阅读后,我认为我尝试使用page.on以错误的方式接近它,而我本应该使用page.waitForResponse

page.waitForResponse使我能够在每次单独下载.click()后立即获得每个文件名响应,并在尾随代码中使用它。

唯一的问题是这种方法似乎不像page.on那样可靠,有时它会错过发生的下载然后超时。我需要找出为什么会发生这种情况的解决方案。


const response = await page.waitForResponse(
    response => response.headers()['content-type'] == 'audio/mpeg'
);

let filename = response._headers['content-disposition'].match(/filename="(.+)"/)[1];

console.log(filename);


推荐阅读