javascript - 在类方法中使用 Puppeteer
问题描述
我在问我是否可以在类方法中使用 Puppeteer。我阅读了很多关于 async/await 函数的内容,但我找不到任何关于类的内容。我目前有这个:
class Tools{
async login() {
this.browser = ppt.launch({
headless: true,
});
this.page = this.browser.newPage();
this.page.type('#email','test');
...
}
主要方法:
(async function main() {
try {
const tools = await new Tools();
} catch(e) {
console.log('Error: ' + e);
}
})();
对此有何建议?
解决方案
您只是在代码中调用构造函数。您还需要调用该login
函数。此外,您不想将 放在await
构造函数的前面,而是放在login
.
代码
const tools = new Tools();
await tools.login();
关于async
构造函数
请注意,您不能将构造函数调用 ( new Tools
) 与await
. 原因是,await
等待返回的 Promise 被解决。但是构造函数不能返回 Promise,因为它们需要返回新创建的对象。
这就是为什么像 puppeteer 这样的库使用像puppeteer.launch
. 除了之后调用异步函数之外,这些函数还将创建一个对象。如果你想在你的代码中做类似的事情,你可以这样做:
class Tools {
async initialize() {
// ...
}
static async create() {
const newObject = new Tools();
await newObject.initialize();
}
}
const tools = await Tools.create();
推荐阅读
- maple - 如何在maple中插入分页符?
- java - Android 应用程序在 Intent 处崩溃
- sql - 为什么我在加入 dim_date 时会在结果中看到多个月
- css - 如何在选择中设置菜单图标向下的语言之间的距离?
- neural-network - 如何计算具有多个输出的神经网络中的均方误差?
- vert.x - 节点崩溃后 Vert.x 不公平的 verticle 重新部署
- c# - 断开连接后,lidgren 客户端无法连接
- android - 更新 Xamarin.Forms 会破坏 Android 的 Prism 导航
- java - 使用 Collator 在一行中收集到 TreeMap
- java - 在封闭范围内定义的局部变量 min 必须是 final 或有效 final