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

时间:2018-08-05 12:16:07

标签: javascript node.js phantomjs

我正在尝试使用JavaScript构造函数,并且该构造函数应该是异步的,因为我使用Phantom JS模块抓取数据,因此这就是为什么我必须使用异步函数通过带有节点的Phantom JS抓取数据的原因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()不是构造函数,我缺少什么吗?

2 个答案:

答案 0 :(得分:1)

有关更多详细信息,请参见此处:Async/Await Class Constructor

但总结一下,

shared object (.so files)函数不能是构造函数。

async

这将起作用,但是function func(){ this.foo = 'bar' } const f = new func(); console.log(f.foo); 将不起作用

答案 1 :(得分:1)

构造函数是返回函数中定义类型的Object的函数,例如您引用的MDN中的“ Person”类:

new

async关键字一起使用时,它返回一个带有名称和问候函数的Object。

使用await关键字时,您可以在函数中Route::get('categories/{category}/{slug}', 'GetFrontendController@tourDetail')->name('tourDetail'); Route::get('pcatslugs/{pcatslug}/{pslug}','GetFrontendController@getPage')->name('page'); 进行Promises,但它也将该函数转换为Promise生成器,这意味着它将返回Promise而不是Object,这就是为什么不能是构造函数。