2012-01-06 3 views
2

이 코드를 실행하는 동안 경고가 표시됩니다. filtereditem은 DevExpress listboxcontrol입니다. existingItems는 247 개의 항목이있는 배열입니다."이 스크립트 실행을 중지 하시겠습니까?" 이 코드에 대한 경고?

function GetMessage(){ 
    var deletedItems = ''; 
    var count = existingItems.length; 
    for (var i = 0; i < count; i++) { 
     var item = existingItems[i].text; 
     if (!filtereditem.FindItemByText(item)) { 
      if (deletedItems != '') { 
       deletedItems = deletedItems + ', ' + item; 
      } 
      else { 
       deletedItems = item; 
      } 
     } 
    } 
    return deletedItems; 
} 
+2

'count'의 크기는 얼마입니까? 'FindItemByText()'는 무엇을하고 있습니까? –

+0

FindItemByText()는 텍스트의 존재를 확인하는 데 사용되는 devexpress의 목록 상자 컨트롤에 의해 노출 된 클라이언트 측 메서드입니다. –

+0

스크립트가 너무 오래 실행되는 것처럼 들리지만 jScript 디버거를 사용하여 루프의 각 반복이 너무 오래 걸리는 이유를 알 수 있습니까? 247 루프는 많은 양의 반복이 아니지만 FindItemByText가 상당히 집중적 인 경우 아마도 문제 일 것입니다. –

답변

0

모두에게 감사드립니다. 나는이 문제를 해결할 수 있어요

이 문제는() Methos는, 내가 FindItemByValue() 지금 그 작업 벌금 교체 FindItemByText 함께.

2

"이 스크립트 실행을 중지 하시겠습니까?" 일부 스크립트 코드가 실행하는 데 오랜 시간이 걸리기 때문에 일반적으로 경고가 트리거됩니다. 경고가 당신이 코드를 제공 한 GetMessage 함수의 invokation에 의해 유발된다고 가정

, 나는 당신에게 다음과 같은 제안을 제공 할 수 있습니다 :

는이 기능에 for 루프를 가지고있다. 이것이 오랜 시간이 걸릴 수있는 세 가지 이유가 있습니다.

1) 루프 반복마다 오랜 시간이 걸릴 수 있습니다.

2) 너무 많은 반복이있을 수 있으므로 각 반복이 짧은 시간 만 소요 되더라도 전체 루프는 실행하는 데 오랜 시간이 걸립니다.

3) 루프의 대부분의 반복 작업을 실행하는 데 짧은 시간이 걸릴 수도 있지만 루프 내부의 코드가 고정되거나 매우 오랜 시간이 걸리는 루프 변수 i의 값이있을 수 있습니다 .

JavaScript getTime() 방법을 사용하여이 세 가지 사례 중 어느 것을 처리할지 결정할 수 있습니다. http://www.w3schools.com/jsref/jsref_gettime.asp

관련 문제