Not A Constructor With Async Function

- 1 answer

I am trying to make a constructor function in JavaScript, and this constructor should be asynchronous, cause I am using Phantom JS module to scrape the data,so that's why I have to use asynchronous function to scrap data through Phantom JS with Node JS.

Below is my code,

const phantom = require('phantom');
async function InitScrap() {

  var MAIN_URL = "",
      //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;
    if (status == "success") {
      console.log("Site has been loaded");


var s = new InitScrap();

// module.exports = InitScrap();

But when I run this code it says, InitScrap() is not a constructor, am I missing something ?



Constructor functions are functions that return an Object of the type defined in the function, like this "Person" class from MDN you cited:

function Person(name) { = name;
  this.greeting = function() {
    alert('Hi! I\'m ' + + '.');

It returns an Object with a name and a greeting function when used with the new keyword.

When you use the async keyword, you can await Promises in the function but it also converts that function into a promise generator, meaning it will return a Promise, not an Object, that's why it can't be a constructor.