puppeteer如何返回page.on响应值

Kev*_*vin 2 javascript puppeteer

我知道这应该很简单.但是如何返回函数外部使用的值,我无法让它工作.这适用于下载文件并在控制台中返回

价值:附件; 文件名="文件名"

await page._client.send('Page.setDownloadBehavior', {behavior: 'allow', downloadPath: './tmp'})
await page.click('download');

await page.on('response', resp => {
    var header = resp.headers();
    console.log("value: " + header['content-disposition']); 
});
Run Code Online (Sandbox Code Playgroud)

但这和我所尝试的一切都没有回报

await page.on('response', resp => {
     var header = resp.headers();
     return header['content-disposition'];  
 });
Run Code Online (Sandbox Code Playgroud)

我希望能够返回下载文件的文件名,文件大小等,以便在脚本中进一步使用.

如何返回并访问响应值?

Gra*_*ler 6

await之前不应该使用操作员page.on().

Puppeteer page类扩展了Node.js的本机EventEmitter,这意味着无论何时调用page.on(),您都在使用Node.js设置事件监听器emitter.on().

这意味着您包含的功能page.on('response')将在response触发事件时执行.

您不从事件处理程序返回值.而是在事件发生时执行事件处理程序中的功能.

如果要page.on()在函数中使用结果,可以使用以下方法:

const example_function = value => {
  console.log(value);
};

page.on('response', resp => {
  var header = resp.headers();
  example_function(header['content-disposition']);
});
Run Code Online (Sandbox Code Playgroud)