2012-04-12 2 views
3

Ниже приведен фрагмент сценария PhantomJS. Он отслеживает динамический контент на веб-странице AJAXd. трек() вызывается один раз, но по какой-то причине page.open() вызывается 3 разаФункция, вызываемая один раз, но срабатывающая несколько раз

function track(url){ 
     console.log('Tracking',url); 
     var page = require('webpage').create(); 
     console.log('check2') 
     if(page){ 
      console.log('check4'); 
      page.open(url, function (status) { 
       console.log('check3'); 
       if (status !== 'success') { 
        console.log('Unable to load the address!'); 
        setTimeout(function(){start();},1000); 
        setTimeout(function(){page.release();},5000); 
       } 
       else { 
        console.log('check'); 
        var i = 0; 
        var last_winner = false; 
        var logged_once = false; 
        var interval = false; 
        if(!interval){ 
         interval = setInterval(function(){ 
          var scraping = scrape(page); 
          var date = new Date(); 
          var time = date.getTime(); 
          if(scraping){/*Bunch of console logs*/} 
          else{ 
           console.log('Bidding ended'); 
           clearInterval(interval); 
           setTimeout(function(){start();},1000); 
           setTimeout(function(){page.release();},5000); 
          } 
          scraping = false; 
         },1000); 
        }; 
       }; 
      }); 
     }; 
    }; 

Регистрирует следующие к консоли:

Tracking http://www.google.com 
check2 
check4 
check3 
check 
check3 
check 
check3 
check 

По некоторым причинам я не могу понять , page.open() вызывается 3 раза.

+0

Я пытаюсь выяснить, что объект страницы на самом деле: 'console.log (страница);' – Corkscreewe

+0

изменения попытка console.log ('check3'); to console.log (статус); и посмотреть, что вы получаете. У меня такое чувство, что он несколько раз перебирает open() несколько раз, пока он обрабатывает коды статуса http? –

ответ