不是具有异步功能的构造函数
Not a Constructor with async function
我正在尝试在 JavaScript 中创建一个构造函数,这个构造函数应该是异步的,因为我正在使用 Phantom JS 模块来抓取数据,所以这就是我必须使用异步函数来抓取数据的原因通过 Phantom JS 和 Node 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();
But when I run this code it says, InitScrap()
is not a constructor, am I missing something ?
参考这里了解更多详情:
但总而言之,
async
函数不能是构造函数。
function func(){
this.foo = 'bar'
}
const f = new func();
console.log(f.foo);
这会起作用,但 async function func() { .. }
不会起作用
构造函数是 return 函数中定义类型的对象的函数,例如 "Person" class 来自您引用的 MDN:
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
}
当与 new
关键字一起使用时,它 return 是一个具有名称和问候功能的对象。
当你使用 async
关键字时,你可以 await
函数中的 Promise,但它也会将该函数转换为一个 promise 生成器,这意味着它将 return 一个 Promise,而不是一个对象,这就是为什么它不能是构造函数的原因。
我正在尝试在 JavaScript 中创建一个构造函数,这个构造函数应该是异步的,因为我正在使用 Phantom JS 模块来抓取数据,所以这就是我必须使用异步函数来抓取数据的原因通过 Phantom JS 和 Node 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();
But when I run this code it says,
InitScrap()
is not a constructor, am I missing something ?
参考这里了解更多详情:
但总而言之,
async
函数不能是构造函数。
function func(){
this.foo = 'bar'
}
const f = new func();
console.log(f.foo);
这会起作用,但 async function func() { .. }
不会起作用
构造函数是 return 函数中定义类型的对象的函数,例如 "Person" class 来自您引用的 MDN:
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
}
当与 new
关键字一起使用时,它 return 是一个具有名称和问候功能的对象。
当你使用 async
关键字时,你可以 await
函数中的 Promise,但它也会将该函数转换为一个 promise 生成器,这意味着它将 return 一个 Promise,而不是一个对象,这就是为什么它不能是构造函数的原因。