2012-07-24 4 views
0

크롬 확장 프로그램을 만들고 있는데 간격을 사용해야합니다.javascript : setInterval이 멈추지 않고 실행됩니다.

매번 간격이 해제되는 시간은 사용자가 선택합니다.

이 함수는 열려있는 모든 탭에서 실행되고 데이터를 전송합니다.

제 문제는 "타이머"가 정상적으로 작동하지 않는다는 것입니다. 정상적인 while 루프처럼 한번에 모두 실행해야합니다. 내가 뭘 잘못 아무 생각

chrome.tabs.query({}, function (tabs) { 
//the times the code need to run is by the amount of tabs that is open 
     setInterval(function() { 
      if (i < tabs.length) { 

       chrome.tabs.sendRequest(tabs[i].id, { input: "uCanSend", 

        userName: myName, 
        password: myPass, 

        subject: mySubject, msg: myMsg, 

        linkName1: myLinkName1, 
        linkURL1: myLinkURL1, 

        linkName2: myLinkName2, 
        linkURL2: myLinkURL2 

       }, function (response) { }); 

      } 
      i++; 
     }, timeInMintus //the time that the code need to run every time); 
    }); 

: 여기

는 코드입니다. 올바르게 실행되도록 수정하는 방법을 알려주세요. (내 영어 죄송합니다)

답변

2

두 번째 인수는 밀리 초 (천분의 일초)에 있어야합니다. 변수 이름에 따라 분이 지나가고있는 것처럼 보입니다. 당신은 콜백 분마다 실행하려는 경우 예를 들어, :

setInterval(function() { /* snip */ }, 1000*60); 
+0

나는 사용자에게 숫자를 입력하도록 요청하고 나는 chossenTime * 1000을하고 다음 시간을 기다린다. – samy

+0

그래서 어떤 값이'timeInMintus'입니까? –

+0

timeInMintus = choosenTime * 1000 – samy

0

크롬은 최대의 setTimeout/setInterval을 큐에 비활성 탭을 호출하고 minimal timeout length을 변경합니다.

+0

하지만이 코드는 백그라운드 페이지에서 탭 (콘텐츠 스크립트) – samy

관련 문제