2013-09-26 40 views
0

我有一个对象,通过它我想循环。目前正在如下循环是:这个如何通过PhantomJS中的阵列/对象进行循环

for(var i = 0; i< coupons.length; i++) { 
    var couponObj = []; 
var coupon=coupons[i]; 

var casper = require('casper').create();    
casper.start(); 




    casper.then(function(){console.log(JSON.stringify(coupon);} 
    //some other work 
    ); 

} 

问题是它的执行循环一次,而无需输入casper.then(function(){console.log('here')}

一旦它执行的循环,然后它执行casper.then(function(){console.log(JSON.stringify(coupon);}与上次值即。 coupons[coupons.length]

回答

1

由于许多CasperJS的功能是异步的,因此不会将代码包装到Casper.then中,这会导致它们不按顺序运行。你可以用下面的方法解决这个问题。

var coupons = [[1, 2], [2, 3], [3, 4]]; // fake values for testing 

casper.start(); 

casper.then(function() { 
    this.eachThen(coupons, function(response) { 
     console.log(JSON.stringify(response.data)); 
    }); 
}); 

casper.run(); 

这需要至少CasperJS 1.1-beta1运行。

+0

基本上我想要为每个优惠券元素启动多个casper实例。当前的解决方案将只启动一个casper实例,然后使用优惠券对象 – user2129794

+0

据我所知,每个脚本只能有一个casper实例。 – hexid

+0

我试着用上面提到的代码启动多个casperJS实例。它正在创建多个实例,但涉及我提到的问题。 – user2129794