从page.click()回调返回单个元素的数组

时间:2018-10-27 08:41:35

标签: puppeteer

这里是page.click()documentPuppeteer中的

 const [response] = await Promise.all([
  page.waitForNavigation(waitOptions),
  page.click(selector, clickOptions),
]);

由于只有一个返回值response,所以我不太明白为什么它没有如下所示:

 const response = await Promise.all([
  page.waitForNavigation(waitOptions),
  page.click(selector, clickOptions),
]);

有人会阐明这个声明吗?

1 个答案:

答案 0 :(得分:2)

这与Promise.all的工作方式有关,而与木偶戏有关。

  

Promise.all :[...]返回的promise由包含所有   作为参数传递的iterable的值(也包括非承诺值)。

这意味着await Promise.all(...)返回一个包含两个Promises结果的数组。现在,让我们看一下这两个Promise都可以满足:

因此await Promise.all([ ... ])将导致一个数组,第一个值是主要资源响应,第二个值未定义。

感谢destructuring assignment,我们可以这样写:

const [response, valueWhichWillBeUndefined] = await Promise.all([ ... ]);

由于我们对第二个值不感兴趣,我们可以将该变量省去(因为我们知道它将是未定义的),从而导致:

const [response] = await Promise.all([ ... ]);