CasperJS同时请求

nar*_*rek 7 casperjs

可以说我有一系列网址.我不想使用thenOpen函数.因为它等待加载每个以前的url并减少加载时间.

 casper.each(hrefs,function(self,href){
      self.thenOpen(href,function(){ });
      self.then(function(){
        //  Selectors
     });
Run Code Online (Sandbox Code Playgroud)

});

与上述方法相比,您可以使用哪些方法花费更少的钱?在db中创建多个实例存储然后获取是否有效...但这很令人头痛.并且当我同时运行同一个js文件的多个实例时,也希望你也回答一下我会遇到什么问题?

mat*_*der 9

如果您不关心在打开的所有URL之间同步行为,那么您应该为每个URL启动多个casper实例.这是一个例子:

var casperActions = {
  href1: function (casper) {
    casper.start(address, function() {...});
    // tests and what not for href1
    casper.run(function() {...});
  },
  href2: function (casper) {
    casper.start(address, function() {...});
    // tests and what not for href2
    casper.run(function() {...});
  },
  ...
};

['href1', 'href2', ...].each(function(href) {
  var casper1 = require('casper').create();
  casperActions[href](casper);
});
Run Code Online (Sandbox Code Playgroud)

每个实例都可以彼此独立运行,但它允许您同时访问多个URL.