2016-09-09 2 views
0

최근에 제한된 API를 사용하고 대기 시간이므로 요청을 15 초마다 실행해야합니다. 그렇지 않으면 429 속도 제한 초과 상태 코드가 반환됩니다.15 초마다 API 요청 실행

종종이 API에 대해 실행해야하는 전자 메일 주소가 두 개 이상 있으며 전자 메일 주소가 배열 내에 포함되어 있습니다. 15.5 초마다 요청을 실행하는 방법은 어떻게됩니까? 배열 끝까지 각 이메일 주소로 이동 하시겠습니까? 확실히 까다 롭습니다. 나는 시도했다 :

setInterval(checkEmail(email), 15500); 

아무 이유없이 그저 작동하지 않는 것 같습니다. Btw는 checkEmail (email) 함수 내에서 JQuery $ .ajax()를 사용하고 있음을 지적해야합니다.

아무 아이디어 나 있습니까?

미리 감사드립니다.

+0

15 초마다 1 건의 요청으로 제한되는 경우 여러 명의 사용자가 요청할 때 무엇을 할 예정입니까? 아마도 API를 사용하기 위해 돈을 지불하는 것이 가장 좋습니다 (즉, 무료 요금제이므로 요금 제한). –

+0

cron 및 serverside 언어, cron에 약간 문제가 있으며 분만 허용 – madalinivascu

+0

무료 API지만 불행히도 일부 매우 불친한 사람 (항상 누군가가 물건을 망쳐야하기 때문에) API는 큰 시간을 망치고 시작했고 그 사람은 선택의 여지가 있지만 그것에 속도 제한을 설정했다. 유료 버전이 없습니다. Troy Hunt가 '내가 Pwned 되었습니까?'라는 API를 알고 있어야합니다. – Dave

답변

0

는 다음을 수행 할 수 있습니다 : 당신이 확인하는 새 이메일 주소를 보낼 때마다

var emails = []; 
var interval_id; 

function _start() { 
    interval_id = window.setInterval(function() { 
     var email = emails.shift(); 
     if (email) { 
      var r=checkEmail(email.address); 
      if (email.callback) email.callback(r); 
     } 
     else { 
      window.clearInterval(interval_id); 
     } 
    }, 15500); 
} 

function add_email(email, callback) { 
    emails.push({address:email, callback:callback}); 
    if (!interval_id) _start(); 
} 

, 그냥 add_email(email)를 실행합니다. 이렇게하면 대기열에 추가되고 필요한 경우 간격 타이머가 시작됩니다. 또한 수표가 완료되었을 때 알리려면 add_email(email,function(result) {....})라고 말하십시오.

+0

고마워, 그게 완벽하게 작동! – Dave