循环通过CasperJS中的数组。结果相互矛盾

时间:2015-12-29 13:31:39

标签: javascript phantomjs casperjs

我使用casperJS循环遍历数组。它工作正常,除非我发射事件时似乎存在某种竞争条件。

脚本导航到URL,等待选择器,然后在DOM中有选择器时触发事件。事件监听器然后执行它所做的事情。

但问题是,在for循环中我得到变量ad_id的不同结果。我已对代码进行了评论。

当我第一次抓住ad_id时,每次迭代都会有所不同(正常行为)。但是在waitForSelector中调用它会导致每次都使用相同的ad_id。

casper.then(function() {

    log(username, 'Grabbing demographic text and submitting to server'); 

    for(i=0; i < ads.length; i++)
    {
        ad = ads[i];
        ad_id = ad.ad_id; // Here ad_id is different each iteration
        dText = null;
        url = 'https://example.com/page.php?ad_id=' + ad_id + '&page_type=20'; 

        casper.thenOpen(url, function() {
            casper.page.injectJs(fs.workingDirectory + '/js/jquery-2.1.4.min.js');
        });

        casper.waitForSelector('#static_templates', function() {
            dText = casper.evaluate(function() {
                return $('section').first().text();
            });

            log(ad_id); // Here, all ad_id's are the same every iteration

            this.emit('demographic.recieved', ad_id, dText);
        });

        casper.wait(5000);
    }    
});

有什么想法吗?

0 个答案:

没有答案