当我运行以下代码时,会立即向google.com开放150个浏览器。如何让循环等到函数完成再重新打开谷歌之前?
const {
Builder, By, Key, until
} = require('selenium-webdriver');
require('chromedriver');
for (let index = 0; index < 150; index++) {
(async function example() {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('https://www.google.com/');
} catch(err) {
console.log(err);
} finally {
await driver.quit();
}
})();
}
我尝试使用以下帖子中的代码,但没有运气: JavaScript, Node.js: is Array.forEach asynchronous?, Using async/await with a forEach loop, make async call inside forEach
提前感谢您提供任何帮助或信息。
答案 0 :(得分:0)
只是声明并执行async
函数不会自动使线程等到函数执行 - 你必须await
它,否则它只被解释为声明的promise。
(async () => {
for (let index = 0; index < 150; index++) {
await (async function example() {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('https://www.google.com/');
} catch(err) {
console.log(err);
} finally {
await driver.quit();
}
})();
}
})();