不是具有异步函数的构造函数



我正在尝试用JavaScript制作一个构造函数,这个构造函数应该是异步的,因为我使用的是Phantom JS模块来抓取数据,所以我必须使用异步函数通过带有Node JS的Phantom JS来抓取数据。

下面是我的代码,

const phantom = require('phantom');
async function InitScrap() {
var MAIN_URL = "https://www.google.com/",
//Phantom JS Variables
instance = await phantom.create(),
page = await instance.createPage();
// Load the Basic Page First      
this.loadPage = async function() {
console.log("Loading Please wait...");
var status = await page.open(MAIN_URL);
if (status == "success") {
page.render("new.png");
console.log("Site has been loaded");
}
}
}
var s = new InitScrap();
s.loadPage()
// module.exports = InitScrap();

但当我运行这段代码时,它说InitScrap()不是构造函数,我是不是遗漏了什么?

构造函数函数是返回函数中定义类型的Object的函数,比如您引用的MDN中的"Person"类:
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I'm ' + this.name + '.');
};
}

当与new关键字一起使用时,它返回一个带有名称和问候语函数的对象。

当您使用async关键字时,您可以在函数中使用awaitPromises,但它也会将该函数转换为promise生成器,这意味着它将返回promise,而不是Object,这就是为什么它不能成为构造函数的原因。

有关更多详细信息,请参阅此处:Async/Await类构造函数

但总的来说,

async函数不能是构造函数。

function func(){
this.foo = 'bar'
}
const f = new func();
console.log(f.foo);

这将起作用,但async function func() { .. }将不起作用

相关内容

  • 没有找到相关文章

最新更新