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 の関数の多くは非同期であるため、コードを でラップしない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 に答える