0

我有一个我想循环的对象。目前正在循环如下:

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]

4

1 回答 1

1

因为 CasperJS 的许多函数都是异步的,所以不将代码包装在 a 中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才能运行。

于 2013-09-26T14:58:29.067 回答