ExtJs 진행률 표시 줄의 setTimeout 예제 이해

code4jhon

1.- 왜 updateFn에서 함수를 반환해야합니까? 반환 함수를 주석 처리하는이 코드를 실행하면 진행률 표시 줄이 100 %로 바로 이동합니다.

2.- 함수를 반환 할 때 필요한 논리를 updateFn 내에 포함하는 것과 비교하여 함수를 반환 할 때의 차이점은 무엇입니까?

 Ext.onReady(function(){
    Ext.MessageBox.show({   
        title       : 'Wait',
    msg         : 'Hold',
    progressText: "on going ...",
    width       : 300,
    progress    : true,
    closable    : false   
});

var updateFn = function(num){
    console.log('inside updateFn');
    return function(){ //if I comment this line the function gets immediately called (when executed from the for loop)
        console.log(num);
        if(num == 6){
            Ext.MessageBox.updateProgress(100, 'All items saved puto');
            Ext.Function.defer(Ext.MessageBox.hide, 1500, Ext.MessageBox);
        }
        else{
            var i = num / 6;
            var pct = Math.round(100 * i);
            Ext.MessageBox.updateProgress(i, pct + '% completed');
        }


    }
};

for(var i = 1; i < 7; i++){
    console.log('inside for');
    setTimeout(updateFn(i),i * 2000); 
}




});
sjkm
  1. : setTimout첫 번째 매개 변수로 함수에 대한 유효한 참조가 필요합니다. 에서 함수를 반환 updateFn하지 않으면 매개 변수를에 전달하지 않습니다 setTimout.

  2. : 함수에서 함수를 반환 하여 클로저만들 수 있습니다 . 클로저와 그것이 좋은 점을 이해하려면 다음을 읽어 보시기 바랍니다. JavaScript 클로저는 어떻게 작동합니까?

여기서 클로저를 반환해야하는 이유 : 숫자 (변수 i)를 updateFn-함수에 전달합니다. 그런 다음 반환 된 함수에서이 숫자를 사용합니다. 그렇게하지 않으면 해당 변수를 사용할 수 없습니다.

당신은 아마도 다음과 같이하지 않는 이유를 스스로에게 묻고있을 것입니다.

for(var i = 1; i < 7; i++){
    setTimeout(function() {
        updateFn(i); // i is always the same variable (reference)
    }, i * 2000); 
}

그러나 이것은 변수 i가 '보존'되지 않았기 때문에 작동하지 않습니다 . 그런 다음 다음과 같이해야합니다.

for(var i = 1; i < 7; i++){
    setTimeout((function(i) { // f.e. make use of a self-execution function
        return function() {
            updateFn(i); // i is now the variable of the inner scope and thus preserved
        };
    })(i), i * 2000); 
}

이것이 바로 여러분이 이미하고있는 일입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XNA의 진행률 표시 줄 셰이더 문제

분류에서Dev

자바-압축 해제 및 진행률 표시 줄

분류에서Dev

JSF PrimeFaces 진행률 표시 줄 문제

분류에서Dev

Android, ActionBar 아래의 진행률 표시 줄 및 원 진행률 제거

분류에서Dev

extjs4 창에 진행률 표시 줄 추가

분류에서Dev

진행률 표시 줄 / % 이중성?

분류에서Dev

진행률 표시 줄 높이 변경

분류에서Dev

진행률 표시 줄 이동 계산

분류에서Dev

진행률 표시 줄의 런타임 예외

분류에서Dev

MATLAB 진행률 표시 줄이 제 시간에 확장되지 않음

분류에서Dev

jQuery를 통해 진행률 표시 줄의 너비 변경

분류에서Dev

Android의 웹보기에서 진행률 표시 줄 문제

분류에서Dev

여러 개의 원형 진행률 표시 줄 관련 문제

분류에서Dev

부트 스트랩-양식 제어의 진행률 표시 줄

분류에서Dev

진행률 표시 줄 진행 속도 줄이기

분류에서Dev

진행률 표시 줄 진행 속도 줄이기

분류에서Dev

Flutter의 원형 슬라이더 / 진행률 표시 줄

분류에서Dev

wxPython의 정적 / 비 애니메이션 진행률 표시 줄

분류에서Dev

암호 길이의 진행률 표시 줄 늘리기

분류에서Dev

셀의 진행률 표시 줄이 다른 셀에 중복 됨

분류에서Dev

진행률 표시 줄이 JQuery의 양과 같은지 확인

분류에서Dev

Uikit 테이블의 Uikit 진행률 표시 줄

분류에서Dev

파이썬 저주의 진행률 표시 줄

분류에서Dev

고객 진행률 표시 줄이 제대로 채워지지 않음

분류에서Dev

진행률 표시 줄이 제대로 작동하지 않습니다.

분류에서Dev

angularjs의 진행률 표시 줄 표시

분류에서Dev

Xamarin Forms : 진행률 표시 줄 및 해당 업데이트

분류에서Dev

제거하는 동안 Wix의 진행률 표시 줄이 다르게 작동합니다.

분류에서Dev

Java-진행률 표시 줄이 진행되지 않음

Related 관련 기사

  1. 1

    XNA의 진행률 표시 줄 셰이더 문제

  2. 2

    자바-압축 해제 및 진행률 표시 줄

  3. 3

    JSF PrimeFaces 진행률 표시 줄 문제

  4. 4

    Android, ActionBar 아래의 진행률 표시 줄 및 원 진행률 제거

  5. 5

    extjs4 창에 진행률 표시 줄 추가

  6. 6

    진행률 표시 줄 / % 이중성?

  7. 7

    진행률 표시 줄 높이 변경

  8. 8

    진행률 표시 줄 이동 계산

  9. 9

    진행률 표시 줄의 런타임 예외

  10. 10

    MATLAB 진행률 표시 줄이 제 시간에 확장되지 않음

  11. 11

    jQuery를 통해 진행률 표시 줄의 너비 변경

  12. 12

    Android의 웹보기에서 진행률 표시 줄 문제

  13. 13

    여러 개의 원형 진행률 표시 줄 관련 문제

  14. 14

    부트 스트랩-양식 제어의 진행률 표시 줄

  15. 15

    진행률 표시 줄 진행 속도 줄이기

  16. 16

    진행률 표시 줄 진행 속도 줄이기

  17. 17

    Flutter의 원형 슬라이더 / 진행률 표시 줄

  18. 18

    wxPython의 정적 / 비 애니메이션 진행률 표시 줄

  19. 19

    암호 길이의 진행률 표시 줄 늘리기

  20. 20

    셀의 진행률 표시 줄이 다른 셀에 중복 됨

  21. 21

    진행률 표시 줄이 JQuery의 양과 같은지 확인

  22. 22

    Uikit 테이블의 Uikit 진행률 표시 줄

  23. 23

    파이썬 저주의 진행률 표시 줄

  24. 24

    고객 진행률 표시 줄이 제대로 채워지지 않음

  25. 25

    진행률 표시 줄이 제대로 작동하지 않습니다.

  26. 26

    angularjs의 진행률 표시 줄 표시

  27. 27

    Xamarin Forms : 진행률 표시 줄 및 해당 업데이트

  28. 28

    제거하는 동안 Wix의 진행률 표시 줄이 다르게 작동합니다.

  29. 29

    Java-진행률 표시 줄이 진행되지 않음

뜨겁다태그

보관