我有一个异步函数,可以在我的js代码中返回一个promise,如下所示;
async launch(){
return new Promise (function(resolve, reject){
let opts = {
headless: false,
defaultViewport: null,
args: ['--start-maximized'],
slowMo: 1,
timeout: 10000
};
puppeteer
.launch(opts)
.then(function (browser) {
resolve(browser);
});
});
}
它通过使用puppeteer启动新的浏览器页面。
var browserLauncher = new BrowserLauncher();
var browser = await browserLauncher.launch();
var page = await browser.newPage();
因此,我想同时在不同的线程中启动5个浏览器。我该怎么办?
答案 0 :(得分:0)
您可以await
Promise
来Promise.all
多个。请参见下面的示例:
function performTask(message, timeout) {
return new Promise(resolve => {
setTimeout(() => {
console.log(`Completed ${message}`);
}, timeout);
});
}
(async () => {
const allTasks = [
performTask('first', 500),
performTask('second', 100),
performTask('third', 200),
];
await Promise.all(allTasks);
})();
在您的示例中,您可以像这样用async
方法包装动作:
async function launchBrowser(options) {
var browserLauncher = new BrowserLauncher();
var browser = await browserLauncher.launch();
var page = await browser.newPage();
}
await Promise.all([
launchBrowser({ /* options */ }),
launchBrowser({ /* options */ }),
launchBrowser({ /* options */ }),
launchBrowser({ /* options */ }),
launchBrowser({ /* options */ }),
]);