这里是page.click()
中document中Puppeteer
中的>
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),
]);
有人会阐明这个声明吗?
答案 0 :(得分:2)
这与Promise.all的工作方式有关,而与木偶戏有关。
Promise.all :[...]返回的promise由包含所有 作为参数传递的iterable的值(也包括非承诺值)。
这意味着await Promise.all(...)
返回一个包含两个Promises结果的数组。现在,让我们看一下这两个Promise都可以满足:
page.waitForNavigation(waitOptions)
:承诺解决主要资源问题。page.click(selector, clickOptions)
:承诺化为未定义的承诺(不返回任何值)。因此await Promise.all([ ... ])
将导致一个数组,第一个值是主要资源响应,第二个值未定义。
感谢destructuring assignment,我们可以这样写:
const [response, valueWhichWillBeUndefined] = await Promise.all([ ... ]);
由于我们对第二个值不感兴趣,我们可以将该变量省去(因为我们知道它将是未定义的),从而导致:
const [response] = await Promise.all([ ... ]);