2016-09-15 3 views
0

CasperJS에서 평가하는 함수에 매개 변수를 전달하려면 어떻게해야합니까?CasperJS의 평가에서 매개 변수를 전달하는 방법

//Should be logged in at this point 
    casper.then(function() { 
     var counter = 0; 
     var cap = 500; 

     this.evaluate(function(counter) { 
      var children = $('.companies-using-service').children(); 

      while (counter < children.length) { 
       child = children[counter]; 
       console.log($(child).find('a').attr('data-hint')); 
       counter++; 
      } 
     }, counter); 
    }); 
}; 

var scrapeClients = function(counter) { 
    var children = $('.companies-using-service').children(); 

    while (counter < children.length) { 
     child = children[counter]; 
     console.log($(child).find('a').attr('data-hint')); 
     counter++; 
    } 
} 

이상, 나는 매개 변수가없는 함수를 사용할 수 있습니다. 그러나, 나는 evaluate 함수에 scrapeClients 함수를 전달하고자한다. 이 경우 다음을 시도했습니다. this.evaluate(scrapeClients(counter), counter). 그러나이 작동하지 않으며 오류는 $ 변수를 찾을 수 없다고 말합니다.

답변

0

함수는 JavaScript의 일류 시민입니다. 변수와 같은 방법으로 치료할 수 있습니다. 당신은 그들을 지나칠 수 있습니다. 이것은 첫 번째 경우

this.evaluate(scrapeClients(counter), counter) 

아니라

this.evaluate(scrapeClients, counter) 

, 당신은 실제로 함수를 직접 호출하고 싶지 않은 것을 의미한다. 이 함수는 casper.evaluate 내부에서만 사용할 수있는 일부 페이지 속성을 사용하므로 오류가 발생하고 스크립트가 중지됩니다.